2012-02-12 8 views
0

私はこのように、Djangoのadminに読み取り専用フィールドのために呼び出し可能な使用しています:Djangoの管理者呼び出し可能readonly_field冗長な名前

class ItemAdmin(admin.ModelAdmin): 
    fields = ('real_value','estimated_value',) 
    readonly_fields = ('estimated_value',) 

class Item(models.Model): 
    real_value = models.CharField(... , verbose_name=u'a nice label') 

    def get_estimated_value(self): 
     return ...some value... 
    estimated_value = property(get_estimated_value) 

今、私はちょうど管理フォームにestimated_valueためのいくつかの素晴らしいラベルを追加します。これは(合理的に)できますか? :)

答えて

1

exmaple

class ItemForm(forms.ModelForm): 
    estimated_value = forms.CharField(max_length=10) 
    class Meta: 
     model = Item 
    def __init__(self, *args, **kwargs): 
     super(ItemForm, self).__init__(*args, **kwargs) 
     if kwargs.has_key('instance'): 
      instance = kwargs['instance'] 
      self.initial['estimated_value'] = instance.estimated_value 

は、あなたがそれだけのことができます。変更リストに表示したい場合はその後、上記に加えて、管理

class ItemAdmin(admin.ModelAdmin): 
    model = Item 
    form = ItemForm 
+0

さて、このワット"estimated_value"フィールドがreadonly_fieldsリストの* not *である限り、期待どおりの動作をします。私はそれをリストに置くと、古い動作(汎用ラベル、入力フィールドが全くない)に戻ります。 – frnhr

+0

私はこのようなフォームフィールドでカスタムReadOnlyウィジェットを使いました:http://lazypython.blogspot.com/2008/12/building-read-only-field-in-django.htmlトラックに私を得るためにありがとう:) – frnhr

1

カスタムModelFormを定義し、そこにestimated_valueのカスタムフィールドを添付します。このModelFormをformAdminに接続するには、form属性を使用します。ここで

0

にそのフォームを追加することです管理者のlist_displayにフィールドを追加します。

class ItemAdmin(admin.ModelAdmin): 
     model = Item 
     form = ItemForm 
     list_display = ('real_value', 'estimated_value',) 
0
class ItemAdmin(admin.ModelAdmin): 
    fields = ('real_value','estimated_value',) 
    readonly_fields = ('get_estimated_value',) 

class Item(models.Model): 
    real_value = models.CharField(... , verbose_name=u'a nice label') 

    def get_estimated_value(self): 
     return ...some value... 

    get_estimated_value.short_description = 'Your verbose name' 
関連する問題