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 %}