Как добавить переменную в Django модель - PullRequest
0 голосов
/ 14 февраля 2020

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

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

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

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

Ответы [ 2 ]

1 голос
/ 14 февраля 2020

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

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

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

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

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

0 голосов
/ 14 февраля 2020

Вы можете определить модель 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.

...