Как я могу отобразить содержимое связанной таблицы в форме смены администратора Django? - PullRequest
0 голосов
/ 04 мая 2018

Я новичок в программировании, Python и Django, поэтому ваше терпение ценится. Я писал практическое приложение в Джанго для хранения кулинарных рецептов. У меня есть две модели:

class Recipe(models.Model):
    recipe_name = models.CharField(max_length=30)
    recipe_instructions = models.TextField()
    recipe_whyitworks = models.TextField(verbose_name="Why It Works")
    recipe_date = models.DateField()
    def __str__(self):
       return self.recipe_name
    def was_published_recently(self):
       return self.recipe_date >= timezone.now() -datetime.timedelta(days=5)

class Ingredient(models.Model):
    recipe = models.ForeignKey(Recipe, on_delete=models.CASCADE)
    ingredient_name = models.CharField(max_length=30)
    ingredient_qty = models.DecimalField(verbose_name='Quantity', max_digits=3, decimal_places=2)
    ingredient_uom = models.CharField(verbose_name='Unit of Measure', max_length=15)
    def __str__(self):
        return self.ingredient_name

Я установил администратору возможность редактировать любую таблицу:

from django.contrib import admin

# Register your models here.
from .models import Recipe, Ingredient

admin.site.register(Recipe)
admin.site.register(Ingredient)

Что я хочу сделать, так это когда я нажимаю «Ингредиент», мне бы хотелось, чтобы в нем были показаны все предыдущие ингредиенты, добавленные в рецепт, а также количество и единица измерения для каждого в таблице, в дополнение к полям. которые позволяют мне добавить новый. Заранее спасибо за помощь!

1 Ответ

0 голосов
/ 04 мая 2018

Вы можете добавить следующие строки:

admin.py

from django.contrib import admin

class IngredientInline(admin.TabularInline):
    model = Ingredient

class RecipeAdmin(admin.ModelAdmin):
    inlines = [
        IngredientInline,
    ]

admin.site.register(Recipe, RecipeAdmin)
admin.site.register(Ingredient)
...