You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Django Admin中为食谱条目创建内联组件?

Django Admin 内联组件配置方案

针对你的食谱应用MVP需求,以下是实现食谱关联带数量/单位的食材、日记条目关联食谱的Django Admin配置步骤:

1. 编写Admin内联类

在项目的admin.py文件中,先定义RecipeIngredient的内联类,这样就能在Recipe的编辑页面直接添加/管理食材:

from django.contrib import admin
from .models import (
    Meal, Measurement, Ingredient,
    Recipe, RecipeIngredient, Diary
)

# 定义RecipeIngredient的内联组件
class RecipeIngredientInline(admin.TabularInline):
    model = RecipeIngredient
    extra = 1  # 默认显示1个空的食材输入框
    fields = ('ingredient', 'quantity', 'measurement')  # 自定义显示字段顺序
    autocomplete_fields = ('ingredient', 'measurement')  # 启用搜索选择,提升操作体验

# 配置Recipe的Admin页面
@admin.register(Recipe)
class RecipeAdmin(admin.ModelAdmin):
    list_display = ('name', 'user', 'created_at')  # 列表页显示字段
    search_fields = ('name',)  # 搜索功能
    inlines = [RecipeIngredientInline]  # 关联内联组件
    autocomplete_fields = ('user',)  # 用户字段启用搜索

2. 配置Diary的Admin页面

接下来配置日记条目,让它能关联已创建的食谱:

@admin.register(Diary)
class DiaryAdmin(admin.ModelAdmin):
    list_display = ('occured_at', 'user', 'recipe')  # 列表页显示时间、用户、食谱
    list_filter = ('occured_at', 'user')  # 筛选功能
    autocomplete_fields = ('user', 'recipe')  # 关联字段启用搜索
    fields = ('occured_at', 'user', 'recipe')  # 编辑页字段顺序

3. 注册其他基础模型

最后把剩余的基础模型注册到Admin:

@admin.register(Meal)
class MealAdmin(admin.ModelAdmin):
    list_display = ('name',)
    search_fields = ('name',)

@admin.register(Measurement)
class MeasurementAdmin(admin.ModelAdmin):
    list_display = ('name',)
    search_fields = ('name',)

@admin.register(Ingredient)
class IngredientAdmin(admin.ModelAdmin):
    list_display = ('name',)
    search_fields = ('name',)

配置说明

  • TabularInline:采用表格式内联布局,适合展示多列的食材数据(食材、数量、单位),也可以替换为StackedInline使用堆叠式布局
  • extra=1:默认提供一个空的食材输入框,方便快速添加新食材
  • autocomplete_fields:当数据量较大时,替代默认的下拉选择,通过搜索快速定位关联对象,提升操作效率
  • 字段自定义:通过fields控制编辑页的字段顺序和显示内容,避免冗余字段干扰操作

完成配置后,你可以:

  1. 先在Admin中创建好计量单位(Measurement)和食材(Ingredient)
  2. 创建**食谱(Recipe)**时,直接在同一页面添加对应的食材、数量和单位
  3. 创建**日记条目(Diary)**时,选择已有的食谱关联即可

内容的提问来源于stack exchange,提问作者user18457796

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.16 10:16:10