У меня следующие модели.
class Recipe(models.Model):
title = models.CharField(max_length=200)
class RecipeInstruction(models.Model):
recipe = models.ForeignKey(Recipe, related_name='instructions', on_delete=models.CASCADE)
text = models.CharField(max_length=255)
class RecipeInstructionIngredient(models.Model):
recipe_instruction = models.ForeignKey(RecipeInstruction,
related_name='instruction_ingredients', on_delete=models.CASCADE)
text = models.CharField(max_length=50)
Рецепт содержит одну или несколько инструкций, которым необходимо следовать, и каждая инструкция относится к определенному количеству ингредиентов. Рецепт супа с лапшой может иметь инструкцию «Добавьте специи», которая может относиться к ингредиентам «перец» и «соль».
Я пытаюсь найти способ получить одну django страницу администратора из в котором я могу редактировать весь рецепт без необходимости go переходить на разные страницы для создания / редактирования разных моделей. Частично это можно сделать с помощью встроенных, но я борюсь с вложенным RecipeInstructionIngredient.
Мой текущий администратор выглядит так:
class RecipeInstructionInline(admin.TabularInline):
model = RecipeInstruction
extra = 1
show_change_link = True
class RecipeInstructionIngredientInline(admin.TabularInline):
model = RecipeInstructionIngredient
extra = 1
class RecipeAdmin(admin.ModelAdmin):
inlines = [
RecipeInstructionInline,
]
class RecipeInstructionAdmin(admin.ModelAdmin):
inlines = [RecipeInstructionIngredientInline]
admin.site.register(Recipe, RecipeAdmin)
admin.site.register(RecipeInstruction, RecipeInstructionAdmin)
Это создает страницу администратора, где я могу создавать / редактировать рецепт и добавьте одну или несколько инструкций на той же странице. Однако вы не можете выбрать один или несколько ингредиентов для привязки к этой инструкции. Я добавил «ссылку для изменения» к инструкциям, и когда вы go там, вы можете редактировать эту модель инструкций с помощью встроенных редактируемых инструкций-ингредиентов, но это означает, что вы покидаете страницу рецепта, и все ваши изменения там теряются.
- Есть ли способ получить кнопки добавления / редактирования для ингредиентов-инструкций на самой встроенной инструкции?
- Можно ли перечислить ингредиенты-инструкции для данной инструкции в инструкции на странице рецепта?
- Есть ли другие хорошие варианты для того, чтобы рецепт, включая инструкции, включая инструкции-ингредиенты, можно было управлять на одной странице администратора?