Ответ 1
полное имя не является полем в модели django, это невозможно. вы можете использовать методы списка
[person.fullname for person in Person.objects.all() ]
У меня есть пользовательское свойство в моей модели Django, которая возвращает полное имя Person:
class Person(models.Model):
first_name = models.CharField(max_length=30)
last_name = models.CharField(max_length=30)
def _get_full_name(self):
return "%s %s" % (self.first_name, self.last_name)
full_name = property(_get_full_name)
Когда я создаю запрос, я хотел бы ссылаться на это свойство. Например:
people = Person.objects.all().values_list('full_name')
К сожалению, Django дает следующий FieldError:
FieldError: не удается разрешить ключевое слово 'full_name' в поле
Короче говоря, можно ли получить доступ к настраиваемому свойству через метод values_list()? Если нет, есть ли у кого-нибудь предложения о том, как наилучшим образом исправить эту проблему?
полное имя не является полем в модели django, это невозможно. вы можете использовать методы списка
[person.fullname for person in Person.objects.all() ]
values_list
может работать только с полями, полученными непосредственно из базы данных. Как отмечает zaca, вам понадобится понимание списка в реальном наборе запросов:
[person.fullname for person in Person.objects.all()]
Не используйте чрезмерное использование values_list
. Это просто означает, что вы ограничиваете запрос db, поскольку, когда вы знаете, вам понадобятся только эти конкретные поля. Для почти всех применений получение стандартного набора запросов достаточно эффективно.