2012-11-03 5 views
0

J'ai une classe et c'est modelForm.Comment faire pour que Django ModelForm ait un seul champ?

class UserGoal(models.Model): 
    user = models.ForeignKey(User) 
    goal = models.ForeignKey(Goal) 
    deadline = models.DateTimeField(blank=True, null=True) 
    goalETA = models.DateTimeField(blank=True, null=True) 
    def __unicode__(self): 
     return u'%s, %s, %s ' %(self.user, self.goal, self.deadline) 

class partialGoalSetForm(ModelForm): 
    class Meta: 
     model = UserGoal 
     fields = ('deadline', 'goalETA') 

Ce code fonctionne correctement pour avoir seulement 2 champs (deadline et goalETA) dans le formulaire. Cependant, si je retire un dans la liste:

fields = ('deadline') 

Ensuite, je reçois l'erreur suivante:

django.core.exceptions.FieldError: Champ inconnu (s) (a, e, d, i , l, n) spécifié pour UserGoal

Il semble que le caractère 'deadline' soit utilisé par les caractères. Très étrange.

Les solutions que j'ai essayé comprennent:

fields = ('deadline') 

fields = 'deadline' 

field = ('deadline') 

field = 'deadline' 

Aucun dont le travail.

Des suggestions? Merci de votre aide.

Répondre

1

Étant donné que les champs n'ont qu'un seul élément, une virgule flottante doit être traitée comme un tuple. Sinon, il est traité comme la chaîne "deadline".

fields = ('deadline',) 
+0

Génial, merci! Ça a marché. Donc, cette virgule. C'est à cause du typage dynamique de python? Et il traite les champs comme deux types de données différents, qu'il y ait une virgule ou pas? – DynamicViewer

Questions connexes