Я пытаюсь создать FileField, который можно щелкнуть в админке, но который доступен только для чтения.В настоящее время существует открытый тикет для этой проблемы, но сейчас мне нужно обойти это.Я пытаюсь написать валидатор для моего админ-класса, но при запуске я сталкиваюсь с исключением.Это то, что у меня сейчас есть:
class ModelWithAttachment(models.Model):
attachment = FileField(upload_to=somewhere, blank=True)
class ModelWithAttachmentAdminForm(forms.ModelForm):
class Meta:
model = ModelWithAttachment
def clean_attachment(self):
attachment = self.cleaned_data['attachment']
return self.cleaned_data['attachment']
class ModelWithAttachmentAdmin(admin.ModelAdmin):
form = ModelWithAttachmentAdminForm
В настоящее время я получаю ошибку AssertionError без исключения в строке attachment = self.cleaned_data['attachment']
.Если я заменю эту строку на cleaned_data = self.cleaned_data
, я получу ту же ошибку AssertionError.Насколько я понимаю, предполагается, что self.cleaned_data был создан ранее в процессе валидации, поэтому я не понимаю, почему его не существует.
Во-вторых, моя цель в этом целомСхема состоит в том, чтобы проверить значение вложения, отправляемого через администратор, по отношению к значению, которое оно в настоящее время удерживает, и отклонить его (вызвать ValidationError), если они различаются - по сути, сделать вложение «только для чтения», позволяя щелкнуть его в администраторе.,Это достижимая цель?Есть ли другой лучший / более простой способ сделать это?