raw_id_fields:如何显示名称而不是id?

问题描述:

自定义一个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

有关的表示物体使用__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

我也研究过这个,我不认为这是可能的。我认为你能做的最好是旁边显示原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

它似乎这个插件: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