簡體   English   中英

在Django admin中顯示User ForeignKey的字段

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM