Модели Django не могут быть запрошены из-за отсутствия поля id?
В настоящее время я работаю над проектом django для бота discord. Проблема, которую я пытаюсь решить, заключается в том, что я не могу запросить данные для одной из моих моделей.
Часть информации, которая была для меня неясна и которая, я уверен, вызвала эту проблему, была связана с рядом проблем миграции, с которыми я столкнулся, пытаясь обновить модель Character с новыми отношениями к модели InventoryInstance в отдельном приложении.
Когда я загружаю сессию django shell_plus - я получаю эту ошибку при попытке запросить модель персонажа:
находится в inventory.models
In [1]: Character.objects.all()
Out[1]: OperationalError: no such column: oblivionalchemy_character.inventory_instance_id
Вот мои модели Character и InventoryInstance:
расположен по адресу oblivionalchemy.models
class InventoryInstance(models.Model):
character_name = models.ForeignKey('oblivionalchemy.Character', on_delete=models.CASCADE, null=True, related_name="character")
items = models.JSONField(default=dict)
class Character(models.Model):
user = models.ForeignKey('discordbot.DiscordUser', on_delete=models.CASCADE, null=True, related_name="characters")
name = models.CharField(max_length=40)
strength = models.IntegerField(default=10)
endurance = models.IntegerField(default=10)
agility = models.IntegerField(default=10)
speed = models.IntegerField(default=10)
willpower = models.IntegerField(default=10)
intelligence = models.IntegerField(default=10)
personality = models.IntegerField(default=10)
luck = models.IntegerField(default=10)
alchemy = models.IntegerField(default=10)
survival = models.IntegerField(default=10)
blade = models.IntegerField(default=10)
marksman = models.IntegerField(default=10)
inventory_instance = models.OneToOneField('inventory.InventoryInstance', on_delete=models.CASCADE, related_name="character", null=True, blank=True)
Я не могу понять, как взаимодействовать с этими данными, чтобы воссоздать записи после создания "восходящих" зависимостей от другой модели. В идеале я хочу, чтобы рабочий процесс шел
Создана запись модели пользователя DisordUser Создана запись модели персонажа Создана запись модели InventoryInstance.
И у меня уже были существующие записи о персонажах до того, как я создал модель DiscordUser. Но я не уверен, что понимаю, как запросить эти данные и "подхватить все" после внесения изменений в модель. Может ли кто-нибудь помочь мне понять, что здесь происходит?
Я обнаружил проблему, я пытался связать отношения OneToOneField с полями ForeignKey в "нижележащей" модели, и это вызывало некоторые проблемы. Я исправил ошибку, просто поместив отношения OneToOneField между каждой из моделей, которые требуют этой функциональности.