1
class Campaign(models.Model):
    id = models.AutoField(primary_key=True)
    campaign_name = models.TextField()    

class SessionLog(models.Model):
    date = models.DateField()
    campaign_name = models.ForeignKey(Campaign, on_delete=models.CASCADE)

来自网站的错误:

/admin/session/sessionlog/ 处的 OperationalError(1054,“‘字段列表’中的未知列‘session_log.campaign_name_id’”)

我正在尝试做的事情:创建一个下拉列表SessionLog以根据 Campaign 中的条目填充campaign_name。我是新来的提问。如果我解释错了,请善待。

我一直在努力学习自己。我已经阅读并重新阅读并查看并浏览了 StackOverflow,然后在指向这个方向时阅读了更多内容:https ://docs.djangoproject.com/en/3.0/topics/db/models/#many-to-one-relationships

我尝试了给出的第一个答案,这使我也尝试了其他各种事情。最后,我一直通过网站看到这个:

ignored_wrapper_args    
(False,
 {'connection': <django.db.backends.mysql.base.DatabaseWrapper object at 0x7f5d3768ec88>,
  'cursor': <django.db.backends.utils.CursorDebugWrapper object at 0x7f5d375a5240>})
params  
()
self    
<django.db.backends.utils.CursorDebugWrapper object at 0x7f5d375a5240>
sql 
('SELECT `session_log`.`id`, `session_log`.`date`, '
 '`session_log`.`campaign_name_id`,

最后,您会看到它一直在尝试查找不存在的campaign_name_id ..。我找不到我说过要找到它的任何地方。

当我仔细检查我的sessionlog数据库表是否设置正确时,我看到了这个MySQL

mysql> describe session_log;
+---------------------+----------+------+-----+---------+----------------+
| Field               | Type     | Null | Key | Default | Extra          |
+---------------------+----------+------+-----+---------+----------------+
| id                  | int(11)  | NO   | PRI | NULL    | auto_increment |
| date                | date     | NO   |     | NULL    |                |
| campaign_name       | tinytext | NO   |     | NULL    |                |
| chapter_name        | tinytext | NO   |     | NULL    |                |
| scene_name          | tinytext | NO   |     | NULL    |                |
| character_name      | tinytext | NO   |     | NULL    |                |
| location_name       | tinytext | YES  |     | NULL    |                |
| npc_name            | tinytext | YES  |     | NULL    |                |
| monster_name        | tinytext | YES  |     | NULL    |                |
| item_name           | tinytext | YES  |     | NULL    |                |
| loot_pp             | int(11)  | YES  |     | NULL    |                |
| loot_gp             | int(11)  | YES  |     | NULL    |                |
| loot_ep             | int(11)  | YES  |     | NULL    |                |
| loot_sp             | int(11)  | YES  |     | NULL    |                |
| loot_cp             | int(11)  | YES  |     | NULL    |                |
| session_xp          | int(11)  | YES  |     | NULL    |                |
| session_strongstart | tinytext | YES  |     | NULL    |                |
| session_secrets     | tinytext | YES  |     | NULL    |                |
| session_clues       | tinytext | YES  |     | NULL    |                |
| session_notes       | text     | YES  |     | NULL    |                |
+---------------------+----------+------+-----+---------+----------------+
20 rows in set (0.00 sec)

4

3 回答 3

0

看来您还没有进行迁移。

于 2020-02-28T08:07:57.243 回答
0
class Campaign(models.Model):
    id = models.AutoField(primary_key=True)
    campaign_name = models.TextField()

    def __str__(self):
        return self.campaign_name    

class SessionLog(models.Model):
    date = models.DateField()
    campaign_name = models.ForeignKey("appname.Campaign", on_delete=models.CASCADE)

将 appname 替换为您的 Django 应用程序名称。我希望这可以帮助您解决问题。您是否在admins.py文件中注册了您的模型。

我不清楚您是否在从数据库中检索数据或在管理页面上监控时遇到错误。

于 2020-02-28T02:14:06.700 回答
0

我已经删除了 id 索引,认为我应该这样做是因为 django 创建了它自己的索引。好吧,这导致了很多错误。

我从头开始重建,确保我的数据库设置有 id 和 index 以及一些外键设置和 wala!一切都好。:) 做了适当的 makemigration 和 migrate 步骤。:)

感谢您对正确方向的所有指示!

于 2020-03-02T03:56:25.993 回答