【问题标题】:Populate added_by field from CreateView从 CreateView 填充 added_by 字段
【发布时间】:2019-11-22 10:56:01
【问题描述】:

我已扩展 django-taggit TagBase 模型以包含 added_by 字段作为 User 的 ForeignKey:

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)

一切都很好,但是我在从我的 CreateView 填充该字段时遇到了问题。这是我尝试过的:

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

如何在我的标签实例上正确地自动填充 added_by 字段?

【问题讨论】:

    标签: python django django-taggit


    【解决方案1】:

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

    【讨论】:

      猜你喜欢
      • 2013-11-28
      • 2012-01-22
      • 1970-01-01
      • 1970-01-01
      • 2015-05-26
      • 2021-05-19
      • 2021-05-20
      • 2019-12-02
      • 1970-01-01
      相关资源
      最近更新 更多