Django (partie admin)

Relation OneToMany

L'auteur de ce sujet a trouvé une solution à son problème.
Auteur du sujet

Bonjour à tous,

je débute avec Django, et je ne comprends pas trop la relation susmentionnée. J'ai deux modèles dans un module, soit Exercise et Question. Une question peut appartenir à un exercice, qui peut avoir plusieurs questions. Voilà mes modèles :

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
class Exercise(models.Model):
        user = models.ForeignKey(User, on_delete=models.CASCADE, default=1)
        year_subject = models.CharField(max_length=255)
        theme = models.CharField(max_length=255)
        name = models.CharField(max_length=255, default='ExerciseXY')
        statement = models.CharField(max_length=255)
        source = models.CharField(max_length=255)

        def __str__(self):
                return self.name

class Question(models.Model):
        exercise = models.ForeignKey(Exercise, on_delete=models.CASCADE)
        question_text = models.CharField(max_length=255)

        def __str__(self):
                return self.question_text

J'ai créé une classe Inline pour pouvoir, si j'ai bien compris, afficher toutes les questions relatives à un exercice dans la vue Admin d'un exercice :

1
2
class QuestionInline(admin.TabularInline):
        model = Question

J'ai ensuite défini deux classes Admin, pour chacun des modèles, afin d'afficher les bons champs dans la vue admin :

1
2
3
4
5
6
7
8
9
class QuestionAdmin(admin.ModelAdmin):
        list_display = ('exercise',)
        list_filter = ('exercise',)

class ExerciseAdmin(admin.ModelAdmin):
        inlines = [QuestionInline,]
        list_display = ('name', 'year_subject', 'theme', 'statement', 'source', 'user', 'inlines')
        list_filter = ('user', 'year_subject', 'theme',)
        search_fields = ('questions__exercise',)

J'obtiens alors l'erreur suivante :

1
2
TypeError at /admin/exercises/exercise/
'list' object is not callable
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
81          {% endif %}
82        {% endblock %}
83  
84        <form id="changelist-form" method="post"{% if cl.formset.is_multipart %} enctype="multipart/form-data"{% endif %} novalidate>{% csrf_token %}
85        {% if cl.formset %}
86          <div>{{ cl.formset.management_form }}</div>
87        {% endif %}
88  
89        {% block result_list %}
90            {% if action_form and actions_on_top and cl.show_admin_actions %}{% admin_actions %}{% endif %}
91            {% result_list cl %}
92            {% if action_form and actions_on_bottom and cl.show_admin_actions %}{% admin_actions %}{% endif %}
93        {% endblock %}
94        {% block pagination %}{% pagination cl %}{% endblock %}
95        </form>
96      </div>
97    </div>
98  {% endblock %}
99  

Le bug étant situé à la ligne 91. Ce que je comprends, c'est que Django n'arrive pas à afficher le résultat, mais comment faire ?

Merci de votre aide :)

Édité par leir

+0 -0
Vous devez être connecté pour pouvoir poster un message.
Connexion

Pas encore inscrit ?

Créez un compte en une minute pour profiter pleinement de toutes les fonctionnalités de Zeste de Savoir. Ici, tout est gratuit et sans publicité.
Créer un compte