需要 Django 外键吗?
我有三个课程:
class Location(models.Model):
name = models.CharField(max_length = 200)
class Student(models.Model):
name = models.CharField(max_length = 200)
email = models.EmailField()
class Exam(models.Model):
place = models.ForeignKey(Location)
taker = models.ForeignKey(Student)
score = models.DecimalField(max_digits = 5, decimal_places = 2)
当我运行这个课程时,它抱怨学生没有考试的外键。为什么?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
听起来您的实际数据库与您的模型不同步。您需要使用
manage.pysyncdb
删除并重新创建数据库(最简单,但除非您使用 重新加载初始数据的装置)或使用迁移工具,例如 South 升级现有数据库以反映新的数据模型。It sounds like your actual database is out of sync with your model. You'll want to either drop and recreate your database using
manage.py syncdb
(easiest, but you will lose the data unless you use something like fixtures to reload initial data) or use a migration tool like South to upgrade your existing database to reflect the new data model.你可以在manage.py shell上尝试这个:
我可以毫无错误地做到这一点...对我来说看起来不错..
You can try this on the manage.py shell:
which I can do with no errors... Looks good to me..
在
admin.py
文件中,我有inlines = [StudentsInline]
设置。这试图强制将多个学生添加到一项考试中(认为它位于 OneToMany 关系的一侧)。In the
admin.py
file I hadinlines = [StudentsInline]
setting. This tries to enforce adding multiple Students to one exam (thinking it's on the One side of a OneToMany relationship).