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