我在models.py文件中有以下内容:
const mapStateToProps = (state, ownProps) => {
return {
packages: state.get('packages'),
results: !state.getIn(['packages','packages','results']) ? List() : state.getIn(['packages','packages','results'])
};
}
当我登录Django管理员时,我添加了一些电影,然后添加了一些评论,选择评论相关的电影对象。然后我通过管理面板创建了几个用户。
我希望我的关系是:
电影可以有很多评论/评论属于电影
用户可以拥有许多评论/评论属于用户
我认为,就像评论和电影一样,我只需要将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)
定义为user
的外键。我正在努力做到这一点。我正在研究Django tutorials,但我看不到有关如何将其他表格链接到用户的教程。
我以为我可以做这样的事情:
comment
像这样导入用户:
user = models.ForeignKey(User, on_delete=models.CASCADE)
目前的结果是如果我保持from django.contrib.auth.models import User
我得到err_connection_refused
答案 0 :(得分:2)
您是否在设置中更改了默认用户模型?
您应该在评论模型中使用User
,而不是直接使用外键user = models.ForeignKey(settings.AUTH_USER_MODEL, on_delete=models.CASCADE)
,如下所示
class Comment(models.Model):
film = models.ForeignKey(Film, on_delete=models.CASCADE)
body = models.CharField(max_length=200)
user = models.ForeignKey(settings.AUTH_USER_MODEL, on_delete=models.CASCADE)
您需要应用迁移才能将用户添加到Comment,
python manage.py makemigrations
python manage.py migrate
如果您正在应用迁移,那么shell会显示一条消息告诉您正在尝试添加一个不可为空的字段“user”进行评论而不使用默认
您有2个选项
user = models.ForeignKey(settings.AUTH_USER_MODEL, on_delete=models.CASCADE, null=True, blank=True)
再次应用迁移
这是因为django应该填充数据库中的现有记录(如果存在)