2013-03-05 4 views
0

je modèle django se compose de deux classes annualReport et annualReportAttachmentmodèle django: vérifier relation avant d'enregistrer l'objet

La relation entre les deux modèles est oneToMany. Sous la forme d'administration que je dois valider que l'utilisateur a téléchargé au moins un fichier si j'utilise la méthode propre suivante dans la classe annualReport

def clean(self): 
    attachments = annualReportAttachment.objects.filter(annualReport=self) 
    if len(attachments) == 0: 
     raise ValidationError("You should upload at least one file") 

Le problème est que les fichiers joints est pas encore enregistré de manière la variable attachments est vide et le formulaire génère toujours cette erreur.

Comment puis-je vérifier que l'utilisateur a téléchargé au moins un fichier?

+0

si len (pièces jointes)> 0: – catherine

+0

annualReportAttachment est-il représenté en tant que modèle en ligne dans votre classe d'administration pour annualReport? – Brandon

+0

@Brandon oui c'est un modèle en ligne –

Répondre

0

Vous devez vous assurer qu'au moins un formulaire de votre modèle en ligne est enregistré. Pour ce faire, je recommanderais de tirer parti de la classe RequireOneFormSet de https://code.google.com/p/wadofstuff/wiki/WadOfStuffDjangoForms

+0

existe-t-il une autre solution de contournement au lieu de 'RequireOneFormSet'? –

+0

Vous pouvez toujours écrire les vôtres, mais vous finirez par écrire la même logique que celle présentée dans la classe RequireOneFormSet. J'ai utilisé cette classe sur de nombreux projets où au moins un modèle en ligne est nécessaire, et cela fonctionne très bien. – Brandon

+0

Qu'en est-il de la classe RequireOneFormSet qui ne répondra pas à vos besoins? – Brandon

Questions connexes