كيفية التحقق إذا FileField تم تعديل في المشرف جانغو?
-
06-07-2019 - |
سؤال
أنا أحاول أن أفعل نموذج مع الملفات التي لا يمكن تعديلها.ولكن التعليق الملف يمكن أن يكون.
هنا هو ما فعلته, ولكن نحن لا يمكن تعديل التعليق.كيف يمكنني اختبار ما إذا كان ملف جديد (باستخدام الزر استعراض) كما تم إرسال و في هذه الحالة فقط ، إنشاء مثيل جديد من النموذج ؟ إذا لا تحميل من جديد ملف التحديث التعليق.
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
"""
لا تنتمي إلى StackOverflow