0

J'ai une application django dans laquelle je veux utiliser l'héritage du modèle. L'application contient un modèle super classe Article et voici son codeHéritage du modèle django et application d'administration

class Article(models.Model): 
    english_title = CharField(max_length=200) 
    arabic_title = CharField(max_length=200) 
    english_body = HTMLField() 
    arabic_body = HTMLField() 
    enabled = BooleanField() 

    def __unicode__(self): 
     return self.english_title 

    def get_body(self, locale): 
     if locale == "ar" : 
      return self.arabic_body 
     else: 
      return self.english_body 

    def get_title(self, locale): 
     if locale == "ar" : 
      return self.arabic_title 
     else: 
      return self.english_title 

et il y a une classe enfant appelé History qui étend cette classe et voici son code

class History(Article, IHasAttachments): 
    date = DateField(auto_now_add=True) 

Mon problème apparaît dans l'admin application où le champ dateField (date) du modèle Historique n'apparaît pas dans le formulaire d'administration lors de l'insertion d'une nouvelle entrée.

NOTE: J'utilise django-tinymce, djnago-navigateur de fichiers, et django-Grappelli

Quel serait le problème?

Répondre

2

Je pense que le problème est dans votre modèle historique vous définissez auto_now_add = True, ce qui empêchera votre champ de date indiquée sur admin, s'il vous plaît vérifier la Document django à propos Model field reference:

Comme actuellement mis en œuvre, la mise en auto_now ou auto_now_add True provoquera le champ d'avoir modifiable = False et = TRUE.

Et à propos Field.editable:

Si False, le champ ne sera pas affiché dans l'admin ou tout autre ModelForm.

Si vous voulez modifiable, mais a aussi une valeur par défaut, essayez ceci:

class History(Article, IHasAttachments): 
    date = DateField(default=datetime.date.today) 
+0

peut-il vous la remplacer par '= modifiable TRUE'? –

0

Si vous ajoutez auto_now=True ce champ sera mise à jour à chaque modification. Donc, il sera logiquement normal que vous ne puissiez pas le modifier.

Si vous voulez ajouter la date automatique lorsque vous créez une instance, je vous suggère ceci:

from django.utils.timezone import now 

class History(Article, IHasAttachments): 
    date = DateField(default=now())