在Django模型,如果我們有
def __unicode__(self):
那麼它將被用來作爲你想怎麼默認顯示Django管理:默認的模型顯示問題
現在的模式,我想有一個custmized顯示字段(將此對象顯示爲URL,因此可以導航到此對象),但我不能更改它用於其他目的的方法。我該怎麼做?
在Django模型,如果我們有
def __unicode__(self):
那麼它將被用來作爲你想怎麼默認顯示Django管理:默認的模型顯示問題
現在的模式,我想有一個custmized顯示字段(將此對象顯示爲URL,因此可以導航到此對象),但我不能更改它用於其他目的的方法。我該怎麼做?
別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
您可以創建管理類
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代碼
我同意這些答案,但在我的機器上不工作。
我正在使用Python3和Django1.8,並嘗試使用它。
class MyModel(models.Model):
name = models.CharField(max_length=60)
def __str__(self):
return 'MyModel: {}'.format(self.name)