Я хочу объединить поля first_name и last_name, чтобы создать поле full_name. Который затем будет использован для создания пули.

Я получил NameError: name 'self' is not defined с этим кодом.

class Employee(models.Model):
    first_name = models.CharField(max_length=50)
    last_name = models.CharField(max_length=50, null=True, blank=True)
    full_name = self.first_name + " " + self.last_name 
    slug = AutoSlugField(null=True, default=None, unique=True, populate_from='full_name')
0
GTA.sprx 7 Май 2020 в 12:44

2 ответа

Лучший ответ

Вы можете создать свойство в классе. Это возвращает свойство slug как

>>> e.slug
'sandesh-daundkar'
class Employee(models.Model):
    first_name = models.CharField(max_length=50)
    last_name = models.CharField(max_length=50, null=True, blank=True)
    slug = AutoSlugField(null=True, default=None, unique=True, populate_from='full_name')

    @property
    def full_name(self):
        return f"{self.first_name} {self.last_name}"
1
sandeshdaundkar 7 Май 2020 в 09:55

Методы класса могут быть решением

class Employee(models.Model):
    first_name = models.CharField(max_length=50)
    last_name = models.CharField(max_length=50, null=True, blank=True)
    slug = AutoSlugField(null=True, default=None, unique=True, populate_from='full_name')

    @property
    def last_name(self):
        full_name = self.first_name + " " + self.last_name
        return full_name
0
Amar 7 Май 2020 в 09:55