[英]Display field for User ForeignKey in Django admin
class Lab(Model):
responsible = ForeignKey(User)
這是我的Django模型的非常簡化的版本。 基本上問題出在Django管理員,當我想編輯或添加一個新的Lab
對象時,包含User
對象的下拉列表只顯示User.username
值,這只是我的情況下的數字。
我希望下拉列表顯示User.last_name
值。
我怎樣才能做到這一點?
您必須為實驗室管理員定義自己的用戶選擇字段。
from django import forms
from django.contrib import admin
class UserChoiceField(forms.ModelChoiceField):
def label_from_instance(self, obj):
return obj.last_name
# Now you have to hook this field up to lab admin.
class LabAdmin(admin.ModelAdmin):
def formfield_for_foreignkey(self, db_field, request=None, **kwargs):
if db_field.name == 'responsible':
kwargs['form_class'] = UserChoiceField
return super(LabAdmin, self).formfield_for_foreignkey(db_field, request, **kwargs)
這樣的事情。 我沒有測試過,所以可能會有一些拼寫錯誤。 希望這可以幫助!
django中的默認User
模型返回username
作為對象表示。 如果要更改此設置,則必須覆蓋__unicode__
方法。
您無法編寫proxy model
來擴展用戶模型 ,然后覆蓋__unicode__
方法以返回last_name
像這樣的東西:
class MyUser(User):
class Meta:
proxy = True
def __unicode__(self):
return self.last_name
class Lab(Model):
responsible = ForeignKey(MyUser)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.