Я хочу добавить переменную в модель Django и не хочу сохранять ее в базе данных, в то же время я хочу вернуть эту переменную пользователю при вызове конечной точки.

Это то, что я нашел в Интернете, но проблема в том, что переменная не запускается для пользователя

class User (models.Model):
   f_name = models.CharField(max_length=255)
   l_name = models.CharField(max_length=300)
   full_name = ''

Как повторно запустить full_name для пользователя, когда он вызывает API?

-2
prg.dev 14 Фев 2020 в 16:03

2 ответа

Лучший ответ

Если это использует Django Rest Framework, я не знаю, как настроен ваш код, но вам нужно расширить ваш сериализатор:

Добавить новое поле в сериализатор: full_name = serializers.SerializerMethodField()

Добавить метод в сериализатор:

def get_full_name(self, obj):
    return "{} {}".format(obj.first_name, obj.last_name)

НОТА: Есть много разных способов объединить эти строки, используя @property в вашей модели, fstrings и т. д. - вы можете выбрать наиболее подходящий для ваших нужд (не видя остальной части вашего кода ()

1
RHSmith159 14 Фев 2020 в 13:15

Вы можете определить модель property:

class User (models.Model):
   f_name = models.CharField(max_length=255)
   l_name = models.CharField(max_length=300)

   @property
   def full_name(self):
       return self.f_name + self.l_name

Теперь вы используете full_name так же, как обычный атрибут user.full_name.

0
neverwalkaloner 14 Фев 2020 в 13:04