私は、管理者でクリック可能なFileFieldを持っていますが、読み込み専用です。現在、この問題のためにticketが公開されていますが、今は回避策が必要です。私は自分の管理クラスのバリデータを書き込もうとしていますが、実行すると例外が発生します。これは私が現在持っているものです。妥当性検査を使用して、管理者のクリック可能な擬似読み取り専用の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
現在、私はラインattachment = self.cleaned_data['attachment']
で供給例外なくてAssertionErrorを取得します。その行をcleaned_data = self.cleaned_data
に置き換えると、同じAssertionErrorが返されます。私が理解する限り、self.cleaned_dataは検証プロセスの初期段階で作成されているはずなので、なぜそれが存在しないのか分かりません。
2つ目は、管理者から送信された添付ファイルの値を、現在保持している値と比較し、それが拒否されている(ValidationErrorを発生させる)ことです。それを管理者がクリックできるようにしながら「読み取り専用」にします。これは実行可能な目標ですか?これを達成するためのより良い/より簡単な方法がありますか?