gpt4 book ai didi

django - 如何在Django Admin中覆盖外键选择字段的默认显示值?

转载 作者:行者123 更新时间:2023-12-04 13:16:52 24 4
gpt4 key购买 nike

我正在创建模型,每个模型都应与用户相关联,如下所示:

class Item(models.Model):
user = models.ForeignKey(User)
但随后在Django Admin中,对于 Item,它将显示一个 select字段,其中所有用户均按其用户名列出。除了他们的用户名,我还需要显示每个用户的 first_namelast_name
如何在Django Admin界面的选择列表中同时显示所有三个字段?

最佳答案

您需要为此创建自定义Form并在ModelAdmin中设置form属性。
在该Form中,您需要将模型上user字段的表单字段类型覆盖为自定义ModelChoiceFieldModelChoiceField有一个称为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
相关问题
  • Django admin - change ForeignKey display text
  • Django forms: how to dynamically create ModelChoiceField labels
  • Change Django ModelChoiceField to show users' full names ratherthan usernames
  • Django show get_full_name() instead or username in model form
  • django: customizing display of ModelMultipleChoiceField
  • django how to display users full name in FilteredSelectMultiple
  • Django ModelChoiceField drop down box custom population
  • customize select in django admin
  • Use method other than unicode in ModelChoiceField Django
  • 关于django - 如何在Django Admin中覆盖外键选择字段的默认显示值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16369403/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com