2011-02-06 35 views
1

在Django模型,如果我們有
def __unicode__(self):那麼它將被用來作爲你想怎麼默認顯示Django管理:默認的模型顯示問題

在Django管理

現在的模式,我想有一個custmized顯示字段(將此對象顯示爲URL,因此可以導航到此對象),但我不能更改它用於其他目的的方法。我該怎麼做?

回答

0

別t使用__unicode__用於設置便捷網址等目的。

這會掩蓋您的打印對象名稱用於任何其他目的。

從哪個視圖嘗試創建鏈接?從更改列表視圖?從更改視圖?從外鍵?

一般而言,您可以簡單地在您的模型(或ModelAdmin)上定義任何方法,該方法返回完整的HTML鏈接<a href=,設置allow_tags = True,並在您的管理字段中引用它。

# models method 
def admin_url(self): 
    return '<a href="%s">Edit Model</a>' % the_url 
admin_url.allow_tags = True 


# ModelAdmin method, through ForeignKey 
def admin_url(self, obj): 
    return '<a href="%s">Edit Model</a>' % obj.foreignkey.url 
admin_url.allow_tags = True 
1

您可以創建管理類

 

class SomeModelAdmin(admin.ModelAdmin): 
    list_display = ('__unicode__', 'active_status') 

    def active_status(self, obj): 
     if obj.profile.is_active: 
      return """One""" 
     return """Two""" 

    active_status.allow_tags = True 
    active_status.description = "" 
 

一個自定義的方法這只是很簡單的例子,這樣你就可以把你的邏輯放到這個功能 您還可以返回一些HTML代碼

0

我同意這些答案,但在我的機器上不工作。

我正在使用Python3和Django1.8,並嘗試使用它。

class MyModel(models.Model): 

    name = models.CharField(max_length=60) 

    def __str__(self): 
     return 'MyModel: {}'.format(self.name)