Django, при попытке связать предметы с инвентарем как inline возникает ошибка миграции

Цель: Я хочу сделать возможным наличие инлайнов в инвентаре, чтобы вы могли искать одного конкретного пользователя в модели инвентаря и изменять его предметы.

В "Items" я хочу иметь возможность создавать предметы. У них есть название и цена. Просто.

В "Inventory" я хочу иметь возможность создавать инвентаризации, выбирать пользователя (который ими владеет) и давать им несколько предметов, используя инлайны. Для предметов я хочу, чтобы они были независимыми: так, если я создам "Предмет 1", я хочу иметь возможность дать "Предмет 1" любому инвентарю, и я хочу, чтобы они (предметы) были перечислены в инвентаре, а не в самих предметах.

Например: Инвентарь

user items
user1 item1,item2,item3
user2 item2,item6,item78

вместо:

Item

belongs_to item
user1 item1
user1 item2
user1 item3
user2 item2
user2 item6
user2 item78

Код ошибки:

<class 'core.admin.ItemInline'>: (admin.E202) 'core.Item' has no ForeignKey to 'core.Inventory'.

Мой код:

models.py

class Item(models.Model):
    name = models.CharField(max_length=32, blank=False, unique=True)
    price = models.IntegerField(validators=[MinValueValidator(0)], default=0, help_text="0 means Free")

class Inventory(models.Model):
    user = models.OneToOneField(User, on_delete=models.CASCADE, blank=False, verbose_name="Belongs to")
    item = models.ForeignKey(Item, on_delete=models.CASCADE, blank=False, verbose_name="Item")

admin.py

class ItemInline(admin.StackedInline):
    model = Item
    extra = 0

class InventoryAdmin(admin.ModelAdmin):
    list_display = ['user']
    raw_id_fields = ['user']
    inlines = [ItemInline]

admin.site.register(Inventory, InventoryAdmin)

Я уже просмотрел эти темы/вопросы, но (похоже) ни один не решил мою проблему.

Inline в Django admin: не имеет ForeignKey

Django Designing Model : Item/Inventory/User

Как добавить несколько входов из одного поля в модели django

Django - Отправка формы с несколькими вводами для одного поля

Я нашел решение своего вопроса, и я нашел его, пытаясь ответить на чужой вопрос. Мое решение можно найти вот здесь:

https://stackoverflow.com/a/71965110/13698713

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