J'ai un modèle Workout , WorkoutDay et Exercise .
Un entraînement peut avoir plusieurs jours d'entraînement. Une journée d'entraînement se compose de plusieurs exercices. Chaque exercice peut être ajouté à plusieurs jours d'entraînement. Entre la relation entre la journée d'entraînement et l'exercice, des champs supplémentaires doivent être inclus (comme amount_required).
Ce que je voudrais avoir dans la vue d'administration est: Un utilisateur administrateur peut ajouter un nouvel entraînement (avec champs), peut ajouter plusieurs jours d'entraînement, en ajoutant plusieurs exercices à une journée d'entraînement.
J'ai déjà essayé de faire de Workoutday un adminModel en ligne. Cela fonctionne, mais je ne peux pas inclure d'exercices de cette manière.
Pour le visualiser davantage:
Entraînement 1:
Workoutday1:
Exercise1 - amount_required: 10
Exercise2 - amount_required: 50
Workoutday2:
Exercise1 - amount_required: 12
Workoutday3:
Exercise2 - amount_required: 20
Exercise3 - amount_required: 20
Quelqu'un peut-il m'aider s'il vous plaît?
3 Réponses :
Django ne prend pas en charge l'administration en ligne imbriquée (définissez les entrées en ligne sur les classes InlineModelAdmin), ticket ici . Jetez un œil à cette application: django-nested-admin
Vous pouvez essayer quelque chose comme ça sans utiliser d'applications tierces:
@admin.register(WorkoutDay)
class WorkoutDayAdmin(admin):
fieldsets = [
("Exercices", {"fields": ["exercises"], "classes": ["collapse"]}),
]
Normalement, cela devrait vous permettre de sélectionner et de créer plusieurs exercices (en supposant que le champ soit appelé exercices.
Désolé, après avoir relu votre question, cela ne résoudra pas le problème imbriqué.
Cherchez-vous quelque chose comme ça?
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)