、 およびフィールドを含む単純なEmployee
モデルがあります。firstname
lastname
middlename
管理者側とおそらく他の場所では、次のように表示したいと思います。
lastname, firstname middlename
私にとって、これを行う論理的な場所は、モデル内で計算フィールドを作成することです。
from django.db import models
from django.contrib import admin
class Employee(models.Model):
lastname = models.CharField("Last", max_length=64)
firstname = models.CharField("First", max_length=64)
middlename = models.CharField("Middle", max_length=64)
clocknumber = models.CharField(max_length=16)
name = ''.join(
[lastname.value_to_string(),
',',
firstname.value_to_string(),
' ',
middlename.value_to_string()])
class Meta:
ordering = ['lastname','firstname', 'middlename']
class EmployeeAdmin(admin.ModelAdmin):
list_display = ('clocknumber','name')
fieldsets = [("Name", {"fields":(("lastname", "firstname", "middlename"), "clocknumber")}),
]
admin.site.register(Employee, EmployeeAdmin)
最終的に私が必要だと思うのは、名前フィールドの値を文字列として取得することです。私が得ているエラーはですvalue_to_string() takes exactly 2 arguments (1 given)
。文字列への値は望んでいself, obj
ます。obj
意味 がわかりません。
これを行う簡単な方法があるはずです。これをやりたいと思ったのは私が初めてではないと確信しています。
編集: 以下は、ダニエルの回答に変更された私のコードです。私が得るエラーは次のとおりです。
django.core.exceptions.ImproperlyConfigured: EmployeeAdmin.list_display[1], 'name' is not a callable or an attribute of 'EmployeeAdmin' of found in the model 'Employee'.
from django.db import models
from django.contrib import admin
class Employee(models.Model):
lastname = models.CharField("Last", max_length=64)
firstname = models.CharField("First", max_length=64)
middlename = models.CharField("Middle", max_length=64)
clocknumber = models.CharField(max_length=16)
@property
def name(self):
return ''.join(
[self.lastname,' ,', self.firstname, ' ', self.middlename])
class Meta:
ordering = ['lastname','firstname', 'middlename']
class EmployeeAdmin(admin.ModelAdmin):
list_display = ('clocknumber','name')
fieldsets = [("Name", {"fields":(("lastname", "firstname", "middlename"), "clocknumber")}),
]
admin.site.register(Employee, EmployeeAdmin)