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)
类。您能追踪您得到的异常吗?