IntegrityError: null значение в столбце "column_id" отношения "table_model" нарушает ограничение not-null DETAIL: Сбойная строка содержит

может ли кто-нибудь помочь мне, я не могу найти, где я допустил ошибку, Мое приложение называется firstapp и я пытаюсь сделать взаимодействующий сайт, где люди размещают темы и отвечают друг другу. Когда я захожу в тему и пытаюсь ответить на тему после написания my relpy и нажатия Post reply мне выдается эта ошибка:

IntegrityError at /boards/2/topics/19/reply/ нулевое значение в столбце "Topic_id" отношения "firstapp_post" нарушает ограничение not-null ПОДРОБНАЯ ИНФОРМАЦИЯ: Неудачная строка содержит (29, мой ответ, 2021-10-07 07:04:44.068326+00, null, 2, null, null).

я использую postgresql

urls.py

path('boards/<int:board_id>/topics/<int:topic_id>/reply/',views.reply_topic,name='reply_topic'),

views.py

@login_required
def reply_topic(request, board_id,topic_id):
    topic = get_object_or_404(Topic,board__pk=board_id,pk=topic_id)
    if request.method == "POST":
        form =PostForm(request.POST)
        if form.is_valid():
            post = form.save(commit=False)
            post.topic = topic
            post.created_by = request.user
            post.save()

            topic.updated_by = request.user
            topic.updated_dt = timezone.now()
            topic.save()

            return redirect('topic_posts',board_id=board_id, topic_id = topic_id)
    else:
        form = PostForm()
    return render(request,'reply_topic.html',{'topic':topic,'form':form})

models.py

class Board(models.Model):
    name = models.CharField(max_length=50,unique=True)
    description = models.CharField(max_length=150)
    
    def __str__(self):
        return self.name
    
    def get_posts_count(self):
        return Post.objects.filter(Topic__board=self).count()

    def get_last_post(self):
        return Post.objects.filter(Topic__board=self).order_by('-created_dt').first()

class Topic(models.Model):
    subject = models.CharField(max_length=255)
    board = models.ForeignKey(Board,related_name='topics',on_delete=models.CASCADE)
    created_by = models.ForeignKey(User,related_name='topics',on_delete=models.CASCADE)
    created_dt = models.DateTimeField(auto_now_add=True)
    views = models.PositiveIntegerField(default=0)
    updated_by = models.ForeignKey(User,null=True,related_name='+',on_delete=models.CASCADE)
    updated_dt = models.DateTimeField(null=True)
    
    def __str__(self):
        return self.subject

class Post(models.Model):
    message = models.TextField(max_length=4000)
    Topic = models.ForeignKey(Topic,related_name='posts',on_delete=models.CASCADE)
    created_by = models.ForeignKey(User,related_name='posts',on_delete=models.CASCADE)
    created_dt = models.DateTimeField(auto_now_add=True)
    updated_by = models.ForeignKey(User,null=True,related_name='+',on_delete=models.CASCADE)
    updated_dt = models.DateTimeField(null=True)
    
    def __str__(self):
        truncated_message= Truncator(self.message)
        return truncated_message.chars(30)

reply_topic.html

{% extends 'base.html' %}
{%load static%}
{%block title%}{{topic.subject}} {%endblock%}
{% block breadcrumb %}
   <li><a href="{% url 'home' %}">Boards</a></li>
   <li><a href="{% url 'board_topic' topic.board.pk %}">{{ topic.board.name}}</a></li>

        <li>{{topic.subject}}</li>
        <li>Post reply</li>
{%endblock%}

{% block content %}
<form method="post">
    {%csrf_token%}
    {%include 'includes/form.html'%}
        <button type="submit">Post the reply</button>
</form>
{%for post in topic.posts.all%}
 <div>
            <div>
              <div>
                <strong>{{ post.created_by.username }}</strong>
              </div>
              <div>
                <small>{{ post.created_dt }}</small>
              </div>
            </div>
            {{ post.message }}
          </div>
{%endfor%}

{% endblock %}
Вернуться на верх