1
votes

Django: Je suis coincé avec le registre d'administration lorsque je traite des clés étrangères et de nombreux à plusieurs champs à l'intérieur de ce modèle de clé étrangère

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?


0 commentaires

3 Réponses :


1
votes

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


0 commentaires

0
votes

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.


1 commentaires

Désolé, après avoir relu votre question, cela ne résoudra pas le problème imbriqué.



0
votes

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)


0 commentaires