Почему не удается увидеть новую колонку для полного имени?

я пытаюсь объединить значения 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, которое вы создаете с помощью , просто сделайте следующее:

Это будет как еще одно свойство вашей модели.

Вернуться на верх