0
私は、グループと呼ばれるモデルとグループメンバーシップというモデルを持っています。私がしようとしているのは、自分のフィールドの1つに、別の文字列を返すことです。 フロントエンドで正しく表示されますが、データベースに書き込むときにはすべてが1つの文字列になります。私がやろうとしているのは、group_nameを取得し、データベースに書き込むときに残りの文字列を切り捨てることです。 私は同じモデルから会社や部署を後でつかむ必要があるので、それ以上の価値を返す方法を目指しています。モデルチョイスフィールドのdjangoモデルから独立して複数の値を返す
マイモデル
# Group #
#########
class Group(models.Model):
created_by = models.ForeignKey('auth.User', related_name='group_created_by')
id = models.AutoField(primary_key=True)
company = models.ForeignKey(Company)
department = models.ForeignKey(Department)
group_name = models.CharField(max_length=100)
role = models.CharField(max_length=100)
status = models.CharField(max_length=8)
created_date = models.DateTimeField(default=timezone.now)
modified_date = models.DateTimeField(blank=True, null=True)
modified_by = models.ForeignKey('auth.User',
related_name='group_modified_by',
blank=True, null=True)
def create(self):
self.save()
def __str__(self):
return '{}{}{}'.format(self.company, self.department, self.group_name)
マイフォーム
# Group Name #
##############
class GroupNameModelChoiceField(ModelChoiceField):
def label_from_instance(self, obj):
return '{}'.format(obj.group_name)
# Group Membership #
####################
class GroupMembershipForm(forms.ModelForm):
options = (('Enabled', 'Enabled',), ('Disabled', 'Disabled'))
member_id = forms.CharField(
widget=forms.TextInput(attrs={'class': 'form-control'})
)
company = forms.ModelChoiceField(
queryset=Company.objects.filter(status='Enabled'),
widget=forms.Select(attrs={'class': 'form-control'}),
empty_label=''
)
department = forms.ModelChoiceField(
queryset=Department.objects.filter(status='Enabled'),
widget=forms.Select(attrs={'class': 'form-control'}),
empty_label=''
)
group_name = GroupNameModelChoiceField(
queryset=Group.objects.filter(status='Enabled'),
widget=forms.Select(attrs={'class': 'form-control'}),
empty_label=''
)
user_id = forms.ModelChoiceField(
queryset=Person.objects.filter(status='Enabled'),
widget=forms.Select(attrs={'class': 'form-control'}),
empty_label=''
)
full_name = forms.CharField(
widget=forms.TextInput(attrs={'class': 'form-control'}),
)
status = forms.CharField(
widget=forms.Select(
attrs={'class': 'form-control'},
choices=options
)
)
class Meta:
model = GroupMembership
fields = ('member_id', 'company', 'department', 'group_name',
'user_id', 'full_name', 'status')
コードを見ると、有罪の部分は '__str__'メソッドであるように見えます。しかし、あなたの質問を明確にするために、あなたが送るもの、期待するもの、見たものを追加することはできますか? – Aditya
たとえば、Western Regionというグループ名の場合は送信されますが、データベースに書き込まれるのはABC Pipeline INC Engineering Services Western Regionです。私はちょうど西部地域を書く必要があります。 – penguio
非常に恐らく、 '__str__'メソッドの戻り値が書き込まれています。 '__str__'メソッドの値を管理ビューに使用している場合は、より良い方法があります。 '__str__'は' group_name'のような単一の値を返すようにしてください。あなたが解決策を確認したら、私はあなたが私が話したよりよい方法へのリンクを与えるでしょう(私は不必要にそれについて話したいと思っていないので、私は言っています:)) – Aditya