2016-07-20 16 views
0

假設我有一個模型,其中有一個名爲documentation的類變量。我想訪問給定模型更改表單模板中的documentation類變量。我怎樣才能做到這一點?實例保存後,我可以使用{{original.documentation}}訪問模板中的類變量。如何訪問Django Admin中的模型類變量保存前更改表單模板

範例模型

class Person(models.Model): 
    # How do I access this variable in my change form template 
    # before saving the new instace? 
    documentation = "The Person model will be used for all staff including researchers, professors, and authors." 

    first_name = models.CharField(max_length=255) 

回答

0

您可以使用ModelForms這一點。創建一個表單並在您的視圖中引用,如formname = forms.formname()。他們可以使用{formname}標籤顯示整個表單。

它更好地操縱您的變量在forms.py而不是模板。但是你可以在您的視圖類像定義get_context_data(self, **kwargs)函數訪問變量模板,如果你想:

def get_context_data(self, **kwargs): 
     context = super(view_name, self).get_context_data(**kwargs) 
     context['model_field_list'] = Modelname.objects.get(pk=self.kwargs["modelname_pk"]) 
     return context 

現在你可以在模板中使用{model_field_list.fieldname}標籤訪問您的變量。請查看get_context_data函數的文檔:documentation

1

這可以通過更新ModelAdmin類https://docs.djangoproject.com/en/dev/ref/contrib/admin/#other-methods中的Django查看方法來完成。

def add_extra_context(model, kwargs): 
     kwargs.setdefault("extra_context", {}) 
     kwargs["extra_context"]["documentation"] = model.__dict__.get('documentation','') 


class DocumentableAdmin(admin.ModelAdmin): 
    def add_view(self, *args, **kwargs): 
     add_extra_context(self.model, kwargs) 
     return super(DocumentableAdmin, self).add_view(*args, **kwargs) 

    def changelist_view(self, *args, **kwargs): 
     add_extra_context(self.model, kwargs) 
     return super(DocumentableAdmin, self).changelist_view(*args, **kwargs) 

    def change_view(self, *args, **kwargs): 
     add_extra_context(self.model, kwargs) 
     return super(DocumentableAdmin, self).change_view(*args, **kwargs) 

admin.site.register(Person, DocumentableAdmin) 

現在在模型中定義的文檔類變量會使用在訪問的變化形式管理模板可用{{ documentation|safe }}

相關問題