从CreateView填充added_by字段

时间:2019-11-22 01:46:02

标签: python django django-taggit

我已经扩展了django-taggit bad_names_df模型,以将TagBase字段作为added_by的外键:

User

一切正常,但是我在CreateView中填充该字段时遇到问题。这是我尝试过的:

class TagBase(models.Model):
    name = models.CharField(verbose_name=_("Name"), unique=True, max_length=100)
    slug = models.SlugField(verbose_name=_("Slug"), unique=True, max_length=100)
    added_by = models.ForeignKey(User, on_delete=models.CASCADE)

但我遇到错误:

class NoteCreateView(LoginRequiredMixin, CreateView):
    model = Note
    fields = [
        'title',
        'description',
        'notebook',
        'tags'
    ]

    def form_valid(self, form):
        form.instance.added_by = self.request.user
        form.instance.save()
        for tag in form.instance.tags.all():
            tag.added_by = self.request.user
        return super().form_valid(form)

如何正确在标签实例上自动填充IntegrityError at /notes/1/create/ NOT NULL constraint failed: taggit_tag.added_by_id 字段?

1 个答案:

答案 0 :(得分:0)

用户是匿名用户吗?我认为您可以打印 self.request.user 进行检查。