0
我有一個稱爲組的模型,另一個稱爲組成員資格。我想要做的是返回一個單獨的字符串,爲我的表單中的一個字段。 它在前端正確顯示,但寫入數據庫時全部都在一個字符串中。所有我試圖做的就是獲取group_name,並在寫入數據庫時刪除其餘的字符串。 我的目標是回報更多的價值,因爲我需要從同一個模型中獲取公司和部門。從django模型中爲modelchoicefield獨立返回多個值
我的模型
# 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西部地區。我只需要寫西部地區。 – penguio
非常有可能,__str__方法的返回值正在寫入。如果您爲管理視圖使用'__str__'方法的值,則有更好的方法來實現它。保留'__str__'來返回像'group_name'這樣的單個值。如果你確認瞭解決方案,我會給你提供更好的方式的鏈接(我說的是,因爲我不想不必要地談論它:)) – Aditya