Модели 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 между каждой из моделей, которые требуют этой функциональности.

Вернуться на верх