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)