1

我正在尝试在 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)
4

0 回答 0