2011-07-21 2 views
0

私は、管理者でクリック可能な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を発生させる)ことです。それを管理者がクリックできるようにしながら「読み取り専用」にします。これは実行可能な目標ですか?これを達成するためのより良い/より簡単な方法がありますか?

答えて

0

私はそれを理解しました。問題が誤って再利用するばかり古いファイルに.pycた

def clean_attachment(self): 
    if 'attachment' in self.changed_data: 
     raise forms.ValidationError('no!') 

    return self.cleaned_data['attachment'] 

:私のアプローチはclean_attachmentは次のように定義された状態で、正しかったです。一度それを削除しても大丈夫だった。誰かを助けてくれることを願っています。

関連する問題