Entonces tengo estos dos modelos

class Recipe(models.Model):
    short_description = HTMLField(max_length=400)
    likes = models.ManyToManyField(User, blank=True, related_name='recipe_likes')
    slug = models.SlugField(blank=True, unique=True)
    published_date = models.DateTimeField(blank=True, default=datetime.now)
    ratings = GenericRelation(Rating, related_query_name='recipes')

class Ingredient(models.Model):
    name = models.CharField(max_length=20)
    amount = models.FloatField()
    recipe = models.ForeignKey(Recipe, on_delete=models.CASCADE, related_name='recipe_ingredients')

En el panel de administración de la sección de recetas, si elijo una receta, quiero poder agregar ingredientes para esa receta, ¿qué necesito? Creo que no conozco los términos de búsqueda adecuados para usar, espero que entiendas lo que quiero decir.

Gracias por la ayuda.

EDITAR Esta es la solución:

from django.contrib import admin

from .models import Recipe, Ingredient

class IngredientInline(admin.TabularInline):
    model = Ingredient
    extra = 3

@admin.register(Recipe)
class RecipeAdmin(admin.ModelAdmin):
    list_display = ('title',)
    search_fields = ('title', )
    inlines = [IngredientInline,]
0
Sebastian Van Den Noortgaete 27 ago. 2020 a las 13:19

2 respuestas

La mejor respuesta

Querrá leer sobre InlineModelAdmin s:

https://docs.djangoproject.com/en/3.1/ref/contrib/admin/#inlinemodeladmin-objects

Cuando registre sus modelos con una clase de administrador de modelos, agregue una lista inlines.

La documentación es buena sobre esto, así que amplíe su pregunta si tiene preguntas más detalladas.

0
Sym 27 ago. 2020 a las 11:00
from django.contrib import admin

from .models import Recipe, Ingredient

class IngredientInline(admin.TabularInline):
    model = Ingredient
    extra = 3

@admin.register(Recipe)
class RecipeAdmin(admin.ModelAdmin):
    list_display = ('title',)
    search_fields = ('title', )
    inlines = [IngredientInline,]
0
Sebastian Van Den Noortgaete 27 ago. 2020 a las 11:02
63613898