سؤال

أنا أحاول أن أفعل نموذج مع الملفات التي لا يمكن تعديلها.ولكن التعليق الملف يمكن أن يكون.

هنا هو ما فعلته, ولكن نحن لا يمكن تعديل التعليق.كيف يمكنني اختبار ما إذا كان ملف جديد (باستخدام الزر استعراض) كما تم إرسال و في هذه الحالة فقط ، إنشاء مثيل جديد من النموذج ؟ إذا لا تحميل من جديد ملف التحديث التعليق.

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())
هل كانت مفيدة؟

المحلول

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
     """
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top