Как связать модель комментариев с моделью Post в django

Я хочу связать модель комментария с постом, когда несколько постов отображаются на странице, я хочу получить доступ к id поста, который я комментирую, но я не знаю как, пожалуйста, скажите мне, как связать модель комментария Я здесь новичок, поэтому прошу прощения за любые ошибки. Пожалуйста, прокомментируйте, если нужен еще какой-либо код

шаблон :

{% for Img in imgs %}
    <div class="container">
        <div class="card">
            <div class="card-image waves-effect waves-block waves-light">
                <img class="activator" src="{{ Img.Post_Img.url }}" alt="image">
            </div>
            <div class="card-content">
                <img src="{{ Img.op.userprofile.Profile_pic.url }}" class="profiles" alt="{{ Img.op.userprofile.Nick_Name }}">
                <span class="OP">{{ Img.op.userprofile.Nick_Name }}</span>
                <span class="card-title activator white-text text">{{ Img.Title }}<i class="material-icons right">more_vert</i></span>
                <p><a href="https://www.youtube.com/watch?v=dQw4w9WgXcQ">Vote</a></p>
            </div>
            <div class="card-reveal darken-4 black">
                <span class="card-title white-text text">{{ Img.Title }}<i class="material-icons right">close</i></span>
                <form method="post">
                    {% csrf_token %}
                    {{ comment }}
                    <button class="btn waves-effect waves-light" type="submit" name="action">Submit
                        <i class="material-icons right">send</i>
                    </button>
                </form>
                {% for comment in comments %}
                    {{ comment.op.userprofile.Nick_Name }}{{ comment.comment }}
                {% endfor %}

            </div>
        </div>
    </div>
{% endfor %}

модели :

class MemeImg(models.Model):
    Title = models.CharField(max_length=500)
    date_created = models.DateTimeField(auto_now_add=True)
    op = models.ForeignKey(settings.AUTH_USER_MODEL, on_delete=models.CASCADE, default=1)
    Post_Img = CloudinaryField('Post')

    def __str__(self):
        return self.Title


class Comments(models.Model):
    post = models.ForeignKey(MemeImg, on_delete=models.CASCADE)
    op = models.ForeignKey(settings.AUTH_USER_MODEL, on_delete=models.CASCADE, default=1)
    comment = models.TextField()
    date_added = models.DateTimeField(auto_now_add=True)

    def __str__(self):
        return self.post.Title

просмотров (не работает бросает ошибку not null contraint):

def user_home(request):
    func = data(request)
    url = func[0]
    name = func[1]
    comment = CommentSection(request.POST)
    if request.method == 'POST':
        comment = CommentSection(request.POST)
        if comment.is_valid():
            comment.save(commit=False)
            comment.op = request.user
            comment.save()
    comments = Comments.objects.all()
    imgs = MemeImg.objects.all()
    ctx = {
        'imgs': imgs,
        'url': url,
        'name': name,
        'comment': comment,
        'comments': comments,
    }
    return render(request, 'User_Home.html', ctx)

Вам необходимо указать null=True и blank=True для ForeignKey в модели Comments, или вы должны установить значение по умолчанию при makemigrations.

По умолчанию значения None не допускаются для полей, без явного разрешения, потому что свойство post модели Comments по умолчанию установлено на null=False.

Когда вы создаете комментарий и что-то еще, что вы написали, приводит к comment.post = None, то Django пытается найти значение по умолчанию. Но вы не указали значение по умолчанию, поэтому Django выдает ошибку, потому что не может найти, чем заполнить поле, в котором должно быть что-то по умолчанию.

Итак, поле post модели Comments должно выглядеть следующим образом:

 post = models.ForeignKey(MemeImg, on_delete=models.CASCADE, null=True, blank=True)
Вернуться на верх