2010-11-06 9 views
2

Obtenir une erreur avec mon fichier admin.py: 'BaseAdmin.fieldsets [1] [1] [' champs ']' fait référence au champ 'publish_on' qui est manquant dans le formulaire.Erreur Django Admin sur un champ qui manque dans le formulaire

ma classe ressemble à:

class Base(models.Model): 
    ... 
    publish_on = models.DateTimeField(auto_now=True, db_index=True) 
    ... 

Mon admin.py ressemble:

class BaseAdmin(admin.ModelAdmin): 
    ... 
    fieldsets = [ 
     ('Dates', { 
      'fields': ('publish_on',) 
     }), 
    ] 

si je change ma classe admin avec 'pass' ou tout simplement inscrire avec la classe modèle, puis la champ d'heure date apparaît.

+0

Utilisez-vous un formulaire personnalisé? –

+0

Pas de formulaires personnalisés. Si j'utilise ma classe d'administration personnalisée et que je ne définis aucun ensemble de champs, tous les champs de mon modèle n'apparaissent pas ... encore une fois, il manque des champs datetime. – JoeManFoo

+0

Dans mes modèles pour mes datetimefields, j'avais auto_now = True - si je les supprime, les champs s'afficheront. Quelqu'un d'autre voit ce genre de comportement? – JoeManFoo

Répondre

6

Cette erreur est provoquée par auto_now et aussi par auto_now_add. Pour y remédier, ajoutez

readonly_fields = ("publish_on",) 

dans votre BaseAdmin (seulement dans django 1.2 et plus récent).

3

Si vous souhaitez utiliser auto_now_add, mais que vous pouvez ensuite modifier la date, vous pouvez utiliser default=datetime.now dans le champ du modèle. Ceci définit un défaut dans l'admin, mais laisse l'utilisateur le changer, et cela fonctionne dans les inlines.