我希望能够保存m2m字段,但我遇到了一个问题,我遇到了这个错误:
ValueError ::" ..."需要有一个字段的值" id"在此之前可以使用多对多关系。
这是 models.py :
class Font(models.Model):
name = models.CharField(max_length=255)
...
class UserInfo(models.Model):
organisation = models.CharField(max_length=255)
font = models.ManyToManyField(Font)
...
我正在使用modelForm来处理多对多的字段。我用ajax获取我的值,这里是(pdb) request.POST
的样子:
<QueryDict: {'fonts': ['2', '5', '6'], 'organisation': ['COMPANY'], 'csrfmiddlewaretoken': ['...']}>
'fonts'
内的内容是Font
的ID。
views.py
...
save_it = form.save(commit=False)
save_it.organisation = request.POST.get('organisation')
for font in request.POST.getlist('fonts'):
fonts = Font.objects.filter(id=font)
save_it.font = fonts.first().id #error on save_it.font
save_it.save()
save_it.save_m2m()
...
forms.py
class UserInfoForm(forms.ModelForm):
class Meta:
model = UserInfo
fields = ['organisation', 'fonts']
我做错了什么?
答案 0 :(得分:1)
为了向前发展,我认为最好删除“#font”字体&#39;表格中的字段。它不知道如何处理它,你可能没有使用为它生成的HTML,因为字体是如何传输的。
您的视图代码将是这样的:
def form_valid(self, form):
obj = form.save()
for font_id in request.POST.getlist('fonts'):
obj.font.add(Fonts.objects.get(id=font_id))