/posts/create/15/ 处的值错误:无法分配"<Group: Group 2>":"Post.group"必须是"Group"实例



我正在编写属于组和用户的帖子的创建方法。我一直在遇到此错误,尽管这是在文档和我查看的其他所有来源中完成的错误。这是相关文件:

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(时,错误会抛出,尽管这是我学会的方法。希望有人能解决这个问题。谢谢!

您似乎已经混合了两种不同的Group型号。在您的模型中,您有:

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

在您的视图中,您有:

from groups.models import Group 

这些是完全不同的类,这就是为什么您会遇到错误告诉您您不能将groups.models.Group分配给auth.models.Group

我不确定您打算是哪个,但是您需要在两个地方使用同一类。

最新更新