champs d'id brut: comment afficher un nom au lieu d'un id?
personnaliser un panneau D'administration Django, j'utilise raw_id_fields
pour sélectionner une clé étrangère à partir d'un modèle qui a des milliers d'éléments, parce que le menu déroulant par défaut de select-box n'est pas pratique avec autant d'éléments.
ça marche mais ça montre l'id comme on peut le voir sur cette image:
y a-t-il un moyen de montrer le nom ou un autre champ à la place de l'id? Ou, est-il un meilleur moyen d'atteindre ce que l'aide de raw_id_fields
?
ce est mon code 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',)
3 réponses
j'ai aussi fait des recherches et je ne pense pas que ce soit possible. Je pense que le mieux que vous pouvez faire, c'est afficher l'unicode du champ à côté de la crue champ id: http://djangosnippets.org/snippets/2108/
alternativement, vous pouvez afficher l'unicode et un lien vers la page de changement d'administrateur correspondant à la valeur:http://djangosnippets.org/snippets/2217/
est-ce que vous voulez:
(copié à partir de la doc):
Utilisation
from salmonella.admin import SalmonellaMixin
class UserProfileAdmin(SalmonellaMixin, admin.ModelAdmin):
salmonella_fields = ('user',)
vous pouvez utiliser les widgets de Salmonella dans un filtre D'administration bien:
from salmonella.admin import SalmonellaMixin
from salmonella.filters import SalmonellaFilter
class UserProfileAdmin(SalmonellaMixin, admin.ModelAdmin):
list_filter = (
('salmonella_fk', SalmonellaFilter),
)
Pour la représentation d'un objet à utiliser __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)
en Python 3 Utilisez
def __str__(self):