IntegrityError в / posts / create / 18 /: Key (group_id) = (18) отсутствует в таблице "auth_group" - PullRequest
0 голосов
/ 26 апреля 2018

получая эту ошибку при запуске следующего кода при попытке создать сообщение, принадлежащее группе и пользователю:

from django.shortcuts import render, get_object_or_404
from groups.models import Group
from .models import Post
from django.utils import timezone


def create(request, group_id):
    group = get_object_or_404(Group, pk= group_id)
    if request.method == 'POST':
        if request.POST['body'] and request.POST['body']:
            post = Post()
            post.title = request.POST['title']
            post.body = request.POST['body']
            post.pub_date = timezone.datetime.now()
            post.author = request.user
            post.group = group
            post.save()
            return redirect('/groups/' + str(group_id))

        else:
            return render(request, 'groups/detail.html', {'group':group})

    else:
        return render(request, 'groups/detail.html', {'group':group})

Чтобы уточнить, Группы - это созданная мной модель, а не модель Django по умолчанию, поэтому я импортировал ее из groups.models.

вот так выглядит моя модель для поста:

from django.db import models
from django.contrib.auth.models import User
from groups.models import Group


class Post(models.Model):
    title = models.CharField(max_length=255, unique=True)
    body = models.TextField()
    likes_total = models.IntegerField(default=0)
    pub_date = models.DateTimeField()
    author = models.ForeignKey(User, on_delete=models.CASCADE)
    group = models.ForeignKey(Group, on_delete=models.CASCADE)


    def __str__(self):
        return self.name

    def summary(self):
        # return the 1st 100 chars
        return self.body[:100]

    def pub_date_pretty(self):
        # strftime is how to break down time
        return self.pub_date.strftime('%b %e %Y')

Я не понимаю, почему ошибка ищет группу в таблице auth_group, когда я импортировал ее из файла groups.models! любая помощь будет очень признателен!

1 Ответ

0 голосов
/ 26 апреля 2018

В вашем предыдущем вопросе , Post.group указывает на модель auth.Group. Теперь, когда вы изменили его так, чтобы он указывал на groups.Group, вам нужно создать и запустить миграцию, чтобы обновить базу данных.

...