Python Django:“';p';是此函数的无效关键字参数";在许多领域
尝试从与Python Django:“';p';是此函数的无效关键字参数";在许多领域,python,django,forms,model-view-controller,web,Python,Django,Forms,Model View Controller,Web,尝试从与ManyToManyField对应的字段中的记录访问数据时,我遇到了一个失败 型号.py class I(models.Model): t = models.CharField(max_length=255) p = models.ManyToManyField(P) class P(models.Model): name = models.CharField(max_length=255) class MyForm(forms.Form): t = for
ManyToManyField
对应的字段中的记录访问数据时,我遇到了一个失败
型号.py
class I(models.Model):
t = models.CharField(max_length=255)
p = models.ManyToManyField(P)
class P(models.Model):
name = models.CharField(max_length=255)
class MyForm(forms.Form):
t = forms.CharField(required=True, widget=forms.TextInput())
p = forms.ModelChoiceField(queryset=P.objects.all().order_by('name'),
widget=forms.SelectMultiple())
# other_fields_requiring_custom_save = ...
def save(self):
I = I.objects.create(
t = self.data['t'],
p = self.data['p'],
)
I.save() # it breaks here: 'P' is an invalid keyword argument for this function" in ManyToManyField
forms.py
class I(models.Model):
t = models.CharField(max_length=255)
p = models.ManyToManyField(P)
class P(models.Model):
name = models.CharField(max_length=255)
class MyForm(forms.Form):
t = forms.CharField(required=True, widget=forms.TextInput())
p = forms.ModelChoiceField(queryset=P.objects.all().order_by('name'),
widget=forms.SelectMultiple())
# other_fields_requiring_custom_save = ...
def save(self):
I = I.objects.create(
t = self.data['t'],
p = self.data['p'],
)
I.save() # it breaks here: 'P' is an invalid keyword argument for this function" in ManyToManyField
当我试图设置p=self.data['p']
时,它会在save
上中断。在调试器中,我可以看到:
data = <QueryDict: {u'p': [u'2', u'1'], u't': [u'aaa'], ... >
数据=
在create
中将多对多关联传递给关键字参数p
时,无法设置该关联。您需要单独设置关联,而不是在“创建”对话框中。您还可以研究如何优化查询,以便创建和设置多对多不会变成太多查询。请参阅。ManyToManyField的参数必须是另一个模型。从您所展示的内容来看,您的models.py
中没有定义class P(models.Model)
类。您能追踪您得到的异常吗?