2

J'essaie de faire un modèle avec un fichier qui ne devrait pas être modifié. Mais le commentaire du fichier peut être.Comment vérifier si un FileField a été modifié dans l'Admin de Django?

Voici ce que j'ai fait, mais nous ne pouvons pas modifier le commentaire. Comment puis-je tester si un nouveau fichier (en utilisant le bouton Parcourir) a été envoyé et dans ce cas uniquement, créer une nouvelle instance du modèle? Si aucun téléchargement d'un nouveau fichier, mettez à jour le commentaire.

admin.py

class CGUAdminForm(forms.ModelForm): 
    class Meta: 
     model = ConditionsUtilisation 

    def clean_file(self): 
     if self.instance and self.instance.pk is not None: 
      raise forms.ValidationError(_(u'You cannot modify the file. Thank you to create a new instance.')) 
     # do something that validates your data 
     return self.cleaned_data["file"] 

class CGUAdmin(admin.ModelAdmin): 
    form = CGUAdminForm 

admin.site.register(ConditionsUtilisation, CGUAdmin) 

models.py

class ConditionsUtilisation(models.Model): 
    date = models.DateField(_(u'Date d\'upload'), editable=False, auto_now_add=True) 
    comment = models.TextField(_(u'Commentaire de modification')) 
    file = models.FileField(_(u'CGU'), upload_to='subscription/cgu/', storage=CGUFileSystemStorage()) 

Répondre

7
if 'file' in form.changed_data: 
    """ 
    File is changed 
    """ 
    raise forms.ValidationError("No, don't change the file because blah blah") 
else: 
    """ 
    File is not changed 
    """ 
+0

Un grand merci est exactement ça :) – Natim

Questions connexes