2011-05-17 4 views
1

Je prépare un site d'examen pour mes étudiants. Site web simple, avec l'utilisation de l'interface d'administration de Django pour créer le document Question.Django Models and Admin question d'interface

Je modèles suivants:

class Paper(models.Model): 
    name = models.CharField(max_length=2000, unique=False) 
    short_desc = models.TextField(unique=False) 

class Question(models.Model): 
    text = models.TextField(unique=False) 
    order = models.IntegerField(unique=True) 
    paper = models.ForeignKey(Paper, unique=False) 

Tout en ajoutant des questions sur le papier, je veux que je devrais être en mesure d'ajouter la question de l'interface d'administration de papier lui-même, en cliquant sur un signe « + » ou un Dans ma configuration actuelle, je dois d'abord créer le document, puis aller dans l'interface de Question et les ajouter un par un (et je vous en prie) si je perds leur numéro order. Rappelez-vous, chaque question appartient à un papier et ce n'est pas une chose ManyToMany ici.

Dois-je modifier l'admin de quelque façon que ce soit ou est-ce que je le fais mal?

Merci.

Répondre

4

L'interface d'administration a la capacité de modifier des modèles sur la même page en tant que modèle parent . Ceux-ci sont appelés inlines. Voir InlineModelAdmin

Créer une QuestionInline:

class QuestionInline(admin.TabularInline): 
    model = Question 

et PaperAdmin ajouter:

class PaperAdmin(admin.ModelAdmin): 
    ... 
    inlines = [ 
     QuestionInline, 
    ] 
+0

a fait exactement ce que vous me demandiez de, mais le document ne montre pas encore la ligne de question. J'ai effacé ma base de données et re-synchronisé (éd) tout mais toujours pas bon. Est-ce que je manque quelque chose? –

+0

Avez-vous reçu un message d'erreur? – manji

+0

Aucun. runserver a fonctionné et j'ai ouvert une session dans la section d'administration mais elle ressemblait à la même vieille vue normale d'admin de papier. –