Почему не удается увидеть новую колонку для полного имени?
я пытаюсь объединить значения f_n и l_n, отобразить как столбец fullname, отобразить значения fullname длиной символов, и отобразить fullname длиной менее 12, отобразить имена в порядке возрастания
from django.db import models
class c1(models.Model):
f_n=models.CharField(max_length=100)
l_n=models.CharField(max_length=100)
des=models.TextField()
python manage.py shell
In [1]: from django.db.models.functions import Concat
In [2]: from django.db.models import Value as V
In [3]: from temp1app.models import c1
In [4]:
result=c1.objects.annotate(fullname=Concat('f_n',V('('),'l_n',V(')')))
In [5]: result
Out[5]: <QuerySet [<c1: c1 object (1)>, <c1: c1 object (2)>, <c1: c1
object (3)>]>
Вы можете реализовать метод представления __str__
следующим образом:
from django.db import models
class c1(models.Model):
f_n=models.CharField(max_length=100)
l_n=models.CharField(max_length=100)
des=models.TextField()
def __str__(self):
return f'{self.f_n} {self.l_n}'
Таким образом, когда вы получаете набор запросов, подобный следующему:
queryset = c1.objects.all()
Если вы печатаете queryset
:
print(queryset)
Вы сможете увидеть имя и фамилию.
<for i in result:
i.fullname
<
result.values_list('fullname', flat=True)
Если вы действительно хотите вывести свойство fullname, которое вы создаете с помощью , просто сделайте следующее:
Это будет как еще одно свойство вашей модели.