37

Django 管理パネルをカスタマイズして、raw_id_fields何千もの要素を持つモデルから ForeignKey を選択するために使用しています。これは、デフォルトの選択ボックスのドロップダウンが非常に多くの要素で不便であるためです。

動作しますが、この画像に見られるようにIDが表示されます: ここに画像の説明を入力

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',)
4

4 に答える 4

30

Django 2.0 から使用できますautocomplete_fields。ajax select2 と同じように機能します。

admin.py

class StructureAdmin(tree_editor.TreeEditor):
    search_fields = ('name',)
    autocomplete_fields = ('parent',)

参照: https://docs.djangoproject.com/en/2.1/ref/contrib/admin/#django.contrib.admin.ModelAdmin.autocomplete_fields

于 2019-01-24T07:20:32.327 に答える
8

私もこれを調査しましたが、それは可能ではないと思います。あなたができる最善のことは、生のIDフィールドの横にフィールドのユニコードを表示することだと思います:http://djangosnippets.org/snippets/2108/

または、ユニコードと、値に対応する管理者変更ページへのリンクを表示できます: http://djangosnippets.org/snippets/2217/

于 2013-03-19T21:50:54.983 に答える
2

オブジェクトの使用の表現のために__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):
于 2013-03-03T20:30:25.443 に答える