我正在尝试在 Django 中保存一个 m2m 字段。我正在接收a NOT NULL constraint failed: posts_listing.tags
. 我将 django-taggit 用于标签字段。
这是我在表单中覆盖的保存功能。
def save(self, *args, **kwargs):
kwargs['commit'] = False
obj = super(ListingForm, self).save(*args, **kwargs)
obj.created_by = self.request.user
obj.save()
obj.save_m2m()
在回溯中,我似乎在成为save_m2m()
. 错误发生在obj.save()
。但是,在此之前,我看到我在该字段中的数据u'tags': [u'six']
,正在以form.save()
我认为的方式传递。
我已阅读有关 的其他答案save_m2m()
,但似乎无法消除此完整性错误。有什么想法我在这里做错了吗?
在我调用 form.save() 之后,我还尝试将 save_m2m() 放在我的视图中。像这样:
表格.py:
class ListingForm(forms.ModelForm):
def __init__(self, *args, **kwargs):
self.request = kwargs.pop('request', None)
return super(ListingForm, self).__init__(*args, **kwargs)
def save(self, *args, **kwargs):
kwargs['commit'] = False
obj = super(ListingForm, self).save(*args, **kwargs)
obj.created_by = self.request.user
obj.save()
视图.py:
def add_listing(request):
context = RequestContext(request)
if request.method == 'POST':
form = ListingForm(request.POST, request=request)
if form.is_valid():
form.save()
form.save_m2m()
return thanks(request)