Populate added_by field from CreateView

主宰稳场 提交于 2020-01-25 08:35:07

问题


I have extended django-taggit TagBase model to include an added_by field as a ForeignKey to User:

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)

Everything works great, however I'm having an issue with populating that field from my CreateView. This is what I have tried:

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)

but I'm getting an error:

IntegrityError at /notes/1/create/ NOT NULL constraint failed: taggit_tag.added_by_id

How do I properly autopopulate added_by field on my tag instances?


回答1:


Is the user anonymous? I think you can print the self.request.user to check.



来源:https://stackoverflow.com/questions/58986291/populate-added-by-field-from-createview

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!