Я пытаюсь создать экземпляр моей модели комментариев ниже.
class Comment(models.Model):
author = models.ForeignKey(
settings.AUTH_USER_MODEL, on_delete=models.SET_NULL, null=True
)
body = models.TextField(blank=True)
created_at = models.DateTimeField(auto_now_add=True)
deleted_at = models.DateTimeField(blank=True, null=True)
votes = JSONField(default=list, blank=True, null=True)
total_vote = models.IntegerField(default=0)
content_type = models.ForeignKey(ContentType, on_delete=models.CASCADE)
object_pk = models.PositiveIntegerField()
content_object = GenericForeignKey(ct_field="content_type", fk_field="object_pk")
avatar_string = models.CharField(blank=True, max_length=100)
Я создаю его, используя форму модели со следующим определением.
class CommentForm(forms.ModelForm):
event = forms.ModelChoiceField(queryset=Event.objects.all(), required=False)
class Meta:
model = Comment
fields = ["body", "author"]
Форма сохраняется с помощью этой функции представления:
def comment_create(request):
comment_form = CommentForm(request.POST)
if comment_form.is_valid():
comment_form.save(commit=False)
comment_form.author = request.user
comment_form.content_type = ContentType.objects.get_for_model(Event)
comment_form.content_object = comment_form["event"]
comment_form.save()
return HttpResponse()
else:
return HttpResponseBadRequest()
Как получить ее, чтобы заполнить поле content_object моей модели комментария из ModelChoiceField в моей форме?