Django:在处理外键和外键模型中的多对多字段时,我一直使用管理寄存器

2024-05-23 15:59:38 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个模型锻炼锻炼日锻炼

一项训练可以有多个训练日。一天的训练包括多个练习。每个练习可以添加到多个训练日。在workoutday和exercise之间,需要包含额外的字段(如amount_required)

我想在管理员视图中看到的是:管理员用户可以添加一个新的训练(带有一些字段),可以添加多个workoutdays,在一个workoutday中添加多个练习

我已经试着让Workoutday成为一个内嵌的管理员模型。这很有效,但我不能以这种方式包含练习

要使其更形象化,请执行以下操作:

训练1:

   Workoutday1:
               Exercise1 - amount_required: 10
               Exercise2 - amount_required: 50
   Workoutday2:
               Exercise1 - amount_required: 12
   Workoutday3:
               Exercise2 - amount_required: 20
               Exercise3 - amount_required: 20

谁能帮帮我吗


Tags: 用户模型视图管理员方式requiredamountexercise
3条回答

你在找这样的东西吗

class ExercisesInline(admin.TabularInline):
    model = Exercise

class WorkoutAdmin(admin.ModelAdmin):
    list_display = ['id',. .... "your fields" ]
    list_filter = ["list of filters"]
    inlines = [ExercisesInline]

 admin.site.register(Workout, WorkoutAdmin)

Django不支持嵌套的内联管理(在InlineModelAdmin类上定义内联),此处为ticket。请看一下这个应用程序:django-nested-admin

您可以在不使用第三方应用程序的情况下尝试以下内容:

@admin.register(WorkoutDay)
class WorkoutDayAdmin(admin):
    fieldsets = [
        ("Exercices", {"fields": ["exercises"], "classes": ["collapse"]}),
    ]

通常,它应该允许您选择和创建多个exercices(假设该字段名为exercices

相关问题 更多 >