[英]Users as foreign key in Django
我的 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 我添加了一些電影,然后添加了一些評論,選擇評論相關的電影 object。 然后我也通過管理面板創建了幾個用戶。
我希望我的人際關系是:
電影可以有很多評論/評論屬於電影
用戶可以有很多評論/評論屬於用戶
我認為,就像評論和電影一樣,我只需要將user
定義為comment
的外鍵。 我正在努力做到這一點。 我正在學習 Django 教程,但看不到涵蓋如何將其他表鏈接到用戶的教程。
我以為我可以做這樣的事情:
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
使用"settings.AUTH_USER_MODEL" 。
因此,從“django.conf”導入“settings” ,然后使用“settings.AUTH_USER_MODEL” ,如下所示:
from django.db import models
from django.conf import settings # Here
class Comment(models.Model):
film = models.ForeignKey(Film, on_delete=models.CASCADE)
body = models.CharField(max_length=200)
# Here
user = models.ForeignKey(settings.AUTH_USER_MODEL, on_delete=models.CASCADE)
也許您在設置中更改了默認用戶模型?
與在注釋模型中使用user = models.ForeignKey(settings.AUTH_USER_MODEL, on_delete=models.CASCADE)
而不是直接將User
與外鍵一起使用,如下所示
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
python manage.py makemigrations
如果在應用遷移時,shell會顯示一條消息,告知您正在嘗試添加非空字段'user'進行注釋,而沒有默認設置
您有2個選擇
user = models.ForeignKey(settings.AUTH_USER_MODEL, on_delete=models.CASCADE, null=True, blank=True)
並再次應用遷移
這是因為django應該填充數據庫中的現有記錄(如果存在)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.