8

次のように、各モデルをユーザーに関連付ける必要があるモデルを作成しています。

class Item(models.Model):
    user = models.ForeignKey(User)

しかし、Django Admin では、すべてのユーザーがユーザー名別にリストされItemたフィールドが表示されます。selectユーザー名に加えて、各ユーザーのfirst_nameとも表示する必要がありlast_nameます。

Django Admin インターフェイスの選択リスト内で 3 つのフィールドすべてを一緒に表示するにはどうすればよいですか?

4

2 に答える 2

16

このためのカスタムを作成Formし、フォーム属性を設定する必要がありますModelAdmin

そのため、モデルFormのフィールドのフォーム フィールド タイプを custom にオーバーライドする必要があります。userModelChoiceField

ModelChoiceFieldには というメソッドがlabel_from_instanceあり、完全な名前を取得するにはそれをオーバーライドする必要があります。

サンプルコード

######################################
## models.py ##
######################################

from django.db import models
from django.contrib.auth.models import User

class Item(models.Model):
    user = models.ForeignKey(User)
    name = models.CharField("name", max_length=60)

    def __unicode__(self):
        return self.name

######################################
## forms.py ##
######################################

from django import forms
from django.contrib.auth.models import User

from .models import Item


class CustomUserChoiceField(forms.ModelChoiceField):
    def label_from_instance(self, obj):
         return obj.get_full_name()


class ItemForm(forms.ModelForm):
    user = CustomUserChoiceField(queryset=User.objects.all())

    class Meta:
        model = Item

######################################
## admin.py ##
######################################

from django.contrib import admin

from .models import Item
from .forms import ItemForm


class ItemAdmin(admin.ModelAdmin):
    form = ItemForm


admin.site.register(Item, ItemAdmin)

ソース コード リファレンス

https://github.com/django/django/blob/1.4.5/django/forms/models.py#L948

関連する質問

  1. Django 管理者 - ForeignKey の表示テキストを変更する
  2. Django フォーム: ModelChoiceField ラベルを動的に作成する方法
  3. Django ModelChoiceField を変更して、ユーザー名ではなくユーザーの氏名を表示するようにしました
  4. Django は代わりに get_full_name() を表示するか、ユーザー名をモデル形式で表示します
  5. django: ModelMultipleChoiceField の表示をカスタマイズする
  6. django FilteredSelectMultipleでユーザーのフルネームを表示する方法
  7. Django ModelChoiceField ドロップダウン ボックス カスタム人口
  8. django admin で select をカスタマイズする
  9. ModelChoiceField Djangoでunicode以外のメソッドを使用する
于 2013-05-04T05:21:49.360 に答える