2013-03-03 175 views
13

自定義一個Django管理面板,我使用raw_id_fields從模型中選擇一個擁有數千個元素的ForeignKey,因爲默認的選擇框下拉菜單對於如此多的元素來說是不方便的。raw_id_fields:如何顯示名稱而不是id?

它的工作原理,但它顯示的ID可以看出這個形象: enter image description here

是否有任何的方式來顯示,而不是ID名稱或其他領域?或者,有沒有比使用raw_id_fields更好的方法來實現這一點?

謝謝!

**** ****更新

這是我在models.py代碼:

class Structure(MPTTModel): 
    name = models.CharField(max_length=200, unique=True, verbose_name = _('name')) 
    parent = TreeForeignKey('self', null=True, blank=True, related_name='children', verbose_name = _('parent')) 

    def __unicode__(self): 
     return u"%s" % (self.name) 

在admin.py:

class StructureAdmin(tree_editor.TreeEditor): 
    search_fields = ('name',) 
    raw_id_fields = ('parent',) 
+0

http://stackoverflow.com/questions/2809122/how-to-show-raw-id-value-of-a-manytomany-relation-in-the-django-admin – catherine 2013-03-20 03:08:55

+0

如果你只是想擺脫巨大的數據加載和編輯是不需要的,使用'readonly_fields =('parent',)'。 – Ali 2013-12-03 11:21:55

回答

0

有關的表示物體使用__unicode__

class Person(models.Model): 
    first_name = models.CharField(max_length=50) 
    last_name = models.CharField(max_length=50) 

    def __unicode__(self): 
     return u'%s %s' % (self.first_name, self.last_name) 

在Python 3中使用

def __str__(self): 
+0

感謝您的回答。我已經使用__unicode__。我用我在模型中使用的代碼更新了問題。也許我錯過了什麼...... – 2013-03-03 22:38:42

+0

是'結構'你的FK表?你需要在FK模型上使用unicode。 – 2013-03-04 10:30:31

+0

是的,它是自己的TreeForeignKey:'parent = TreeForeignKey('self',[]]' – 2013-03-04 11:23:24

3

我也研究過這個,我不認爲這是可能的。我認爲你能做的最好是旁邊顯示原id字段的字段的Unicode:http://djangosnippets.org/snippets/2108/

或者,您可以顯示Unicode和值的相應的管理變革頁面的鏈接:http://djangosnippets.org/snippets/2217/

+0

感謝您的回答。我試過最後一個片段,但它只顯示保存結構時的Unicode和鏈接,然後再次打開它。你知道我怎麼能顯示相同的,但是當我選擇raw_id? – 2013-04-02 18:55:09

+0

@ A.Vila我有同樣的行爲,你有任何其他的選擇? – elsadek 2014-06-25 06:59:02

3

它似乎這個插件:https://github.com/lincolnloop/django-salmonella

你想要做什麼:

(從文檔複製):

使用

要開始在你的應用程序中使用Django的沙門氏菌所有你需要做的是落實SalmonellaMixin在你的ModelAdmin類,並添加所需的字段salmonella_fields列表:

from salmonella.admin import SalmonellaMixin 

class UserProfileAdmin(SalmonellaMixin, admin.ModelAdmin): 
    salmonella_fields = ('user',) 

您可以在管理員使用沙門氏菌部件過濾器,以及:

from salmonella.admin import SalmonellaMixin 
from salmonella.filters import SalmonellaFilter 

class UserProfileAdmin(SalmonellaMixin, admin.ModelAdmin): 
    list_filter = (
     ('salmonella_fk', SalmonellaFilter), 
    ) 
+0

適合我。 – 2017-12-20 03:26:48

相關問題