我收到django模型的错误:
ProgrammingError at /admin/notifications/eventtoken/
column notifications_eventtoken.user_id does not exist
LINE 1: ...ications_eventtoken" INNER JOIN "users_user" ON ( "notificat...
^
HINT: Perhaps you meant to reference the column "notifications_eventtoken.used_at".
我为这样的用户添加了一个外键:
class EventToken(models.Model):
token = models.CharField(max_length=255, db_index=True)
user = models.ForeignKey(User, null=False, blank=False)
used_at = models.DateTimeField(null=True, blank=True)
event = models.ForeignKey(Event)
当我删除用户字段时它会起作用,但是否则会中断,我无法从错误消息中说出来。
答案 0 :(得分:2)
删除用户字段时可以使用。
这是因为您的数据库缺少您在EventToken类中编程的列,我猜测它在notifications/models.py
内。这就是它被称为ProgrammingError
。
有几种方法可以解决这个问题:
1。删除整个数据库并重新同步!不推荐用于生产的任何东西,但测试项目确实不会造成太大的伤害。
2。使用south或django migrate app等工具(取决于您正在使用的django版本)自动将表格添加到数据库中manage.py脚本。编辑:这个解决方案是最可行的,因为它可以在跨多个开发环境工作时快速遵循DRY原则。
3a。使用命令行工具手动进入数据库并添加缺少的列。如果我没有说清楚......你说'#34;我想保存user_id"这张表中的外键"当你的桌子回来时,#34;没有地方可以保存这个ID。" ......)
3b。使用数据库GUI(如PGadmin for postgresql)并将user_id列添加到notifications_eventtoken数据库表中。
4. 删除EventToken类中的用户字段!不要这样做,但要理解它是有效的,因为它可以清除逻辑差异。