2017-08-29 6 views
0

モデルのadmin.pyでreadonly_fieldsを設定できることがわかっていますが、フィールドを読み取り専用にする)値を返します。Django - カスタムモデル管理フォームフィールドを作成し、モデルインスタンスを渡して読み取り専用属性を設定する

私はカスタムフィールドクラスを作成できますが、上記を達成できるようにモデルインスタンスの値を渡すことができません。

例:

class MytypeField(models.CharField): 

    def __init__(self,*args,**kwargs): 

    PAGE_LAYOUT_CHOICES = (
     ('column1','One Column'), 
     ('column2','Two Columns') 
    ) 

    kwargs['max_length'] = 7 
    kwargs['choices'] = PAGE_LAYOUT_CHOICES 
    kwargs['default'] = 'column1' 

    super(MytypeField,self).__init__(*args,**kwargs) 

とモデル

layout = MytypeField() 

ではadmin.pyではなく、モデル自身でこれを行う方法はありますか?私はモデルインスタンスをこのカスタムクラスに渡すことはできません。とにかくそれを行う方法ではないと確信しています!

多くの感謝!はい、モデル管理者で、モデル管理者は、法get_readonly_fieldsていることができ

答えて

1

class MyAdmin(admin.ModelAdmin): 
    def get_readonly_fields(self, request, obj=None): 
     if obj and obj.layout: 
      return self.readonly_fields + ('layout',) 
     return self.readonly_fields 
+0

をこれは素晴らしいです - 多くのおかげで - 完璧に動作します! – Newfoundland