我目前正在使用一个多选择域来表示我的领域中相应的ManyToManyField。它工作得很好。在
我更新了我的表单,在表单域中使用属性to_field_name来更改用于输入值的字段,它也可以正常工作。在
我的问题是Django选择表单字段的所选数据时,使用的是pk,而不是tou field_name中给定的字段。有什么线索吗?在
class Model1(models.Model):
name = models.Charfield(...)
muscles = models.ManyToManyField(Model2, blank=True, null=True,)
class Model2(models.Model):
name = models.CharField(...)
field1 = models.CharField(...)
class MyForm(ModelForm):
muscles = forms.ModelMultipleChoiceField(
queryset=None,
to_field_name="field1", required=False,)
def __init__(self, *args, **kwargs):
super(MyForm, self).__init__(*args, **kwargs)
self.fields['muscles'].queryset = Model2.objects.all()
模型的字段是一个标准的多个字段。在
例如:
在model2中,我有以下元素:{pk=1,name=name1,field1=3},{pk=2,name=name2,field1=1},{pk=3,name=name3,field1=2}。在
生成的select是:
^{pr2}$如果我选择name2,正确的pk(即2)将保存在数据库中。 显示表单时,所选选项为name3(即值2),而不是name1。在
我希望我已经足够清楚了。在
谢谢你的帮助!在
看起来您可能已经点击了this bug,这在django1.10中已修复。在
嗯,我成功地实现了我想要的。正如@Alasdair建议的那样,我创建了一个中介模型。在
然后在save_model方法中,我可以遍历字段的值并保存它们。在
解决我问题的重点显然是中介模式。在
谢谢@Alasdair
相关问题 更多 >
编程相关推荐