gpt4 book ai didi

python - 用户作为 Django 中的外键

转载 作者:行者123 更新时间:2023-12-04 00:32:52 24 4
gpt4 key购买 nike

我的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 admin 时,我添加了一些电影,然后添加了一些评论,选择评论与哪个电影对象相关。然后我也通过管理面板创建了几个用户。

我希望我的人际关系是:

电影可以有很多评论/评论属于电影

用户可以有很多评论/评论属于用户

我想,就像评论和电影一样,我只需要定义 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_refused

最佳答案

也许您在设置中更改了默认用户模型?

而不是使用 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)

您需要应用迁移才能将用户添加到评论, python manage.py makemigrations python manage.py migrate
如果在您应用迁移的那一刻,shell 会显示一条消息,告诉您您正在尝试添加不可为空的字段“用户”以在没有默认值的情况下进行评论

你有 2 个选择
  • 跳过迁移并向模型中的字段添加默认值或将属性设置为可为空,无论您需要什么
  • user = models.ForeignKey(settings.AUTH_USER_MODEL, on_delete=models.CASCADE, null=True, blank=True)
    并再次应用迁移
  • 或者为新字段选择一个默认值,应该是数据库中现有用户的ID

  • 这是因为 django 应该填充数据库中的现有记录(如果存在)

    关于python - 用户作为 Django 中的外键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48433682/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com