0

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?

adder
  • 3,512
  • 1
  • 16
  • 28

1 Answers1

0

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

David
  • 1