Python 在ModelForm中保存ModelMultipleChiceField时如何解决ValueError?
My model.py:Python 在ModelForm中保存ModelMultipleChiceField时如何解决ValueError?,python,django,Python,Django,My model.py: class RelayAddress(models.Model): id = models.AutoField(primary_key=True,default=0) sister_relay_relation = models.ManyToManyField('self', through='RelaySisterRelation',symmetrical=False) def save(self, *args, **kwargs):
class RelayAddress(models.Model):
id = models.AutoField(primary_key=True,default=0)
sister_relay_relation = models.ManyToManyField('self', through='RelaySisterRelation',symmetrical=False)
def save(self, *args, **kwargs):
self.update_time = int(time.time())
super(RelayAddress,self).save(*args, **kwargs)
class RelaySisterRelation(models.Model):
id = models.AutoField(primary_key=True,default=0)
relay = models.ForeignKey(RelayAddress,related_name="relay")
sister_relay = models.ForeignKey(RelayAddress,related_name="sister_relay")
我的管理员
class RelaySisterRelationForm(forms.ModelForm):
relay=forms.ModelMultipleChoiceField(label=u'relay',widget=forms.CheckboxSelectMultiple(),queryset=RelayAddress.objects.all())
sister_relay=forms.ModelMultipleChoiceField(label=u'sister_relay',widget=forms.CheckboxSelectMultiple(),queryset=RelayAddress.objects.all())
def save(self, *args, **kwargs):
return super(RelaySisterRelationForm, self).save(*args,**kwargs)
并且my view.py为null,则我得到一个ValueError:
Cannot assign "[<RelayAddress: RelayAddress object>]": "RelaySisterRelation.relay" must be a "RelayAddress" instance.
无法分配“[]”:“RelaySiteRelation.relay”必须是“RelayAddress”实例。
以及如何解决这个问题。
relayisterRelation.relay
是RelayAddress
的外键,这意味着它只能存储对一个RelayAddress
的引用,但您的relayisterRelationForm。relay
使用modelMultipleEchoiceField
用于多对多关系,因此返回(可能是空的)RelayAddress实例列表。那么,如何解决这个问题呢?使用ModelChoiceField
而不是ModelMultipleEchoiceField
。非常感谢!但是我已经在类RelayAddress中使用了“ManyToManyField”,在类RelayAddress(models.Model)中我应该怎么做:id=models.AutoField(primary_key=True,default=0)relay=models.ForeignKey(RelayAddress,related_name=“relay”)sister_relay=models.ForeignKey(RelayAddress,related_name=“sister_relay”)“”“我想从复选框中获取多个数据,所以我不能使用“ModelChoiceField”。我不确定您想要实现什么,因此很难给您一个答案。单击“保存”按钮时,我希望通过“已清理的数据['sister_relay']”从复选框中获取多个数据,然后完全置换这些数据,并成对保存。因此,错误发生了如上所述的“…ValueError…”。抱歉我的错误陈述。