我的www.example.com文件中包含以下内容models.py:
class Film(models.Model):
title = models.CharField(max_length=200)
director = models.CharField(max_length=200)
description = models.CharField(max_length=200)
pub_date = models.DateField('date published')
class Comment(models.Model):
film = models.ForeignKey(Film, on_delete=models.CASCADE)
body = models.CharField(max_length=200)
当我登录Django管理时,我添加了一些电影,然后添加了一些评论,选择评论所涉及的电影对象。然后我也通过管理面板创建了一些用户。
我希望我的关系是:
电影可以有很多评论/评论属于电影
用户可以有许多评论/评论属于用户
我想,就像评论和电影一样,我只需要将user
定义为comment
的外键,我正在努力做到这一点,我正在学习Django tutorials,但我看不到关于如何将其他表链接到用户的教程。
我以为我能做这样的事:
user = models.ForeignKey(User, on_delete=models.CASCADE)
导入用户时,如下所示:
from django.contrib.auth.models import User
目前的结果是,如果保留user = models.ForeignKey(User, on_delete=models.CASCADE)
,则会得到err_connection_rejected
2条答案
按热度按时间jecbmhm31#
也许你已经改变了设置中的默认用户模式?
您应该在注解模型中使用
user = models.ForeignKey(settings.AUTH_USER_MODEL, on_delete=models.CASCADE)
,而不是直接将User
与外键一起使用,如下所示您需要应用迁移才能将用户添加到注解
python manage.py makemigrations
python manage.py migrate
如果在应用迁移时,shell会显示一条消息,告知 You are trying to add an non-null field 'user' to comment(您正在尝试将一个不可为空的字段'user'添加到注解中,但没有默认值)
您有2个选项
1.跳过迁移并向模型中的字段添加默认值,或者将属性设置为可空,无论您需要什么,即
user = models.ForeignKey(settings.AUTH_USER_MODEL, on_delete=models.CASCADE, null=True, blank=True)
并再次应用迁移
1.或为新字段选择默认值,该值应为数据库中现有用户的ID
这是因为django应该填充数据库中现有的记录,如果存在的话
khbbv19g2#
使用**“设置。AUTH_USER_MODEL”。
因此,从“django.conf”导入“设置”,然后使用“设置.AUTH_USER_MODEL”**,如下所示: