在Django同一models.py文件中外键关联模型时遇名称未定义错误
问题解决:Django模型关联出现“名称 'chaiVariety' 未定义”错误
错误原因
你的代码核心问题是把chaiReview模型嵌套定义在了chaiVariety模型内部,Django不支持嵌套的模型类结构,同时嵌套类内部直接引用外部类名也会因为作用域问题找不到定义。
解决方案
- 将
chaiReview模型从chaiVariety类内部移出,放在models.py的顶层(和chaiVariety同级) - 建议遵循Django模型类的大驼峰命名规范(如
ChaiVariety、ChaiReview),提升代码可读性 - 确保正确导入
User模型
修正后的代码
from django.db import models from django.utils import timezone from django.contrib.auth.models import User class ChaiVariety(models.Model): CHAI_TYPE_CHOICE = [ ('ML', 'MASALA'), ('GR', 'GINGER'), ('KL', 'KIWI'), ('PL', 'PLAIN'), ('EL', 'ELAICHI'), ] name = models.CharField(max_length=100) image = models.ImageField(upload_to='chais/') date_added = models.DateTimeField(default=timezone.now) type = models.CharField(max_length=2, choices=CHAI_TYPE_CHOICE) description = models.TextField(default=' ') def __str__(self): return self.name # 一对多关联:一个ChaiVariety对应多个ChaiReview class ChaiReview(models.Model): chai = models.ForeignKey(ChaiVariety, on_delete=models.CASCADE) user = models.ForeignKey(User, on_delete=models.CASCADE) rating = models.IntegerField() comment = models.TextField() date_added = models.DateTimeField(default=timezone.now) def __str__(self): return f'{self.user.username} review for {self.chai.name}'
内容的提问来源于stack exchange,提问作者Vibekananda Champati
相关产品推荐
相关产品推荐

