Django contenttypes: нулевое значение в столбце «object_pk» нарушает ненулевое ограничение - PullRequest
0 голосов
/ 10 марта 2020

Я пытаюсь создать экземпляр моей модели комментариев ниже.

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 в моей форме?

...