简体   繁体   中英

Django admin: adding objects for foreignkey from other side

so I have these two models

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')

In the admin panel from the recipes section, if I choose a recipe I want to be able to add ingredients for that recipe, what do I need? I think I don't know the right searchterms to use, hope you understand what I mean.

Thanks for the help.

EDIT This is the solution:

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,]

You'll want to read up on InlineModelAdmin s:

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

When you register your models with a model admin class, add an inlines list.

The documentation is good on this, so please expand your question if you have more detailed questions!

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,]

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM