Как добавить вычисляемое поле в модель Django

У меня простой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)

Ответы на вопрос(5)

Ваш ответ на вопрос