【发布时间】:2015-01-13 01:26:21
【问题描述】:
我尝试从对应于 ManyToManyField 的字段中的记录访问数据时失败。
models.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)
forms.py
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'], ... >
【问题讨论】:
-
ManyToManyField的参数必须是另一个模型。根据您显示的内容,您的models.py中的任何位置都没有定义class P(models.Model)。 -
您能否向我们追溯您遇到的异常情况?
标签: python django forms model-view-controller web