Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 在ModelForm中保存ModelMultipleChiceField时如何解决ValueError?_Python_Django - Fatal编程技术网

Python 在ModelForm中保存ModelMultipleChiceField时如何解决ValueError?

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):

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):
        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…”。抱歉我的错误陈述。