python - NameError:名称“配置文件”未定义
问题描述
这是我的models.py 代码。我试图运行 python3.8 manage.py migrate 命令来为数据库创建表,但我不断收到这个错误,这可能是什么问题。Profile 是 models.py 代码中的一个类。如果您需要我的代码的另一部分,请询问
from django.db import models
from django.contrib.auth.models import User
from django.utils import timezone
class Image(models.Model):
user = models.ForeignKey(User, on_delete=models.CASCADE, null='True', blank=True)
image = models.ImageField(upload_to = 'pics/')
name = models.CharField(max_length=50,blank=True)
caption = models.CharField(max_length=250, blank=True)
likes = models.ManyToManyField(User, related_name='likes', blank=True, )
date_posted = models.DateTimeField(default=timezone.now)
class Comment(models.Model):
comment = models.TextField()
image = models.ForeignKey('Image', on_delete=models.CASCADE,related_name='comments',null='True', blank=True )
name = models.CharField(max_length=100, blank=True)
user = models.ForeignKey(Profile, on_delete=models.CASCADE, related_name='comments',null='True', blank=True )
created = models.DateTimeField(auto_now_add=True, null=True)
class Profile(models.Model):
name = models.OneToOneField(User, on_delete=models.CASCADE)
profile_picture = models.ImageField(upload_to='images/', default='default.png')
bio = models.TextField(max_length=500, default="My Bio", blank=True)
followers = models.ManyToManyField(User, related_name="followers", blank=True)
following = models.ManyToManyField(User, related_name="following", blank=True)
解决方案
您在构造它之前引用了Profile
该类。您可以改用字符串文字:
class Comment(models.Model):
# …
user = models.ForeignKey(
'Profile', # ← a string literal
on_delete=models.CASCADE,
related_name='comments',
null='True',
blank=True
)
# …
最好将字段重命名为profile
,以明确ForeignKey
引用Profile
对象,而不是User
对象:
class Comment(models.Model):
# …
profile = models.ForeignKey( # ← rename to profile
'Profile',
on_delete=models.CASCADE,
related_name='comments',
null='True',
blank=True
)
# …
注意:通常使用
settings.AUTH_USER_MODEL
[Django-doc]引用用户模型比直接使用User
模型 [Django-doc]更好。有关更多信息,您可以查看文档的引用User
模型部分。
推荐阅读
- r - 将非表格 txt 或 csv 导入到 R
- multithreading - 如何触发竞态条件?
- android - firestore 和 google photos 依赖冲突
- gateway - IBM Datapower 网关脚本
- ios - NEPacketTunnelNetworkSettings 中的 tunnelRemoteAddress 有什么作用?
- c# - EF Core 存储过程不同的返回结果
- excel - 在 Excel 中计算选择值的总和
- cordova - Cordova inappbrowser - 读取(httponly)会话 cookie
- firebase - 如何在本地测试firebase云功能express webserver更改
- vba - 想要在IE中select下的选项,一一