问题
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