ValueError в / posts / create / 15 /: невозможно назначить «<Group: Group 2>»: «Post.group» должен быть экземпляром «Group» - PullRequest
0 голосов
/ 26 апреля 2018

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

models.py

from django.db import models
from django.contrib.auth.models import User, 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')

posts.urls.py

from . import views
from django.urls import path


app_name = 'posts'

urlpatterns = [
    path('create/<int:group_id>/', views.create, name='create'),
]

posts.views.py

def create(request, group_id):
    group = get_object_or_404(Group, pk= group_id)
    if request.method == 'POST':
        if 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})

ошибка выдается, когда я сохраняю группу в пост (post.group = group), хотя этот метод я и выучил. Надеюсь, кто-то может понять это. спасибо !!

1 Ответ

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

Вы, похоже, перепутали две разные Group модели. В вашей модели у вас есть:

from django.contrib.auth.models import User, Group

и, на ваш взгляд, у вас есть:

from groups.models import Group 

Это совершенно разные классы, поэтому вы получаете сообщение о том, что вы не можете присвоить groups.models.Group тому, что должно быть auth.models.Group.

Я не уверен, что вы хотите, но вам нужно использовать один и тот же класс в обоих местах.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...