gpt4 book ai didi

python - 无法在我的应用程序 models.py 中将 auth_user 模型主键设置为外键

转载 作者:行者123 更新时间:2023-12-01 07:42:22 24 4
gpt4 key购买 nike

我正在尝试使用 models.py 创建一个博客应用程序,我想将 auth_user 模型主键设置为博客应用程序中模型的外键。添加适当的代码后,我收到以下错误?

 from django.db import models
from django.conf import settings

# Create your models here.
class Post(models.Model):
title=models.CharField(max_length=100)
desc=models.TextField()
date=models.DateTimeField(auto_now=True)
author=models.ForeignKey("settings.AUTH_USER_MODEL",
on_delete=models.CASCADE)

错误:blog.Post.author:(fields.E300) Field 定义了与模型“User”的关系,该模型要么未安装,要么是抽象的。blog.Post.author: (fields.E307) 字段 blog.Post.author 是通过对“blog.user”的惰性引用来声明的,但应用程序“blog”不提供模型“user”。

最佳答案

您不应该在此处使用字符串文字settings.AUTH_USER_MODEL [Django-doc]本身是一个包含用户模型名称的字符串,如文档中所指定:

AUTH_USER_MODEL

Default: 'auth.User'

The model to use to represent a User. (..)

因此,您可以像这样实现:

from django.db import models
from django.conf import settings

class Post(models.Model):
title=models.CharField(max_length=100)
desc=models.TextField()
date=models.DateTimeField(auto_now=True)
author=models.ForeignKey(<b>settings.AUTH_USER_MODEL</b>, on_delete=models.CASCADE)

这个想法是,您要么传递对类本身的引用,要么使用限定名称作为它的字符串。但'settings.AUTH_USER_MODEL'不是用户模型的限定名称。

或者,您可以使用 get_user_model(..) [Django-doc] :

from django.db import models
from django.contrib.auth import <b>get_user_model</b>

class Post(models.Model):
title=models.CharField(max_length=100)
desc=models.TextField()
date=models.DateTimeField(auto_now=True)
author=models.ForeignKey(<b>get_user_model()</b>, on_delete=models.CASCADE)

关于python - 无法在我的应用程序 models.py 中将 auth_user 模型主键设置为外键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56636972/

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