【问题标题】:how to return queryset as a list on seperate lines, without the brackets如何在不带括号的情况下将查询集作为单独行上的列表返回
【发布时间】:2021-11-13 08:53:04
【问题描述】:

我有我的课程模型:

class Lessons(models.Model):
student = models.ForeignKey(Students, 
on_delete=models.SET_NULL, null=True) 

headed_by = models.ForeignKey(Tutors, 
on_delete=models.SET_NULL, null=True)
day = models.CharField(max_length=4, 

choices=DAY_CHOICES, null=True)

start_time = models.TimeField(null=True, 
 blank=True)

type  = models.CharField(max_length=7, 
choices=TYPE_CHOICES, null=True)

price_band  = models.CharField(max_length=7, 
choices=PAYMENT_TYPE_CHOICES, blank=True, null=True)

created  = models.DateTimeField(auto_now_add=True )


def __str__(self):
    return str(self.student) + " at " + 
str(self.start_time)+ " on " + str(self.day)
class Meta:
    ordering=['student',"headed_by",'day','start_time']  

我有我的查询集:

tn_mon     = 
Lessons.objects.all().filter(headed_by__name="Tutor 
Name").filter(day__icontains="Mon")

返回

<QuerySet [<Lessons:Studentname1 at Time on Day>,
<Lessons:Studentname2 at Time on Day>

如何在没有查询集的情况下返回输出, [] 使其返回如下所示?

Studentname1 at Time on Day,
Studentname2 at Time on Day

【问题讨论】:

    标签: python django string django-queryset


    【解决方案1】:

    您可以遍历查询集并在每个对象上调用 str()

    for obj in tn_mon:
       print(str(obj))
    

    将obj存储在list

    tn_mon_list = []
    for obj in tn_mon:
       tn_mon_list.append(str(obj))
       
    

    【讨论】:

    • 可以存储循环以便以后再次调用吗?
    • 在您的情况下,您可以在list 中附加str(obj) 并在需要时使用它。我已经编辑了答案
    【解决方案2】:
    tn_mon = Lessons.objects.all().filter(headed_by__name="Tutor 
    Name").filter(day__icontains="Mon").values()
    
    #convert this object it into list
    my_list = list(tn_mon)
    
    #If you iterate list
    for i in my_list:
     print(i)
    
    Then you will get this
    output:
    Studentname1 at Time on Day,
    Studentname2 at Time on Day
    

    如果您想要 Json 响应,只需将其转换为字典列表

    data = []
        for i in my_list:
            data.append(i)
    return JsonResponse(data, safe=False)
    

    【讨论】:

    • 如何存储循环的输出?这样我就可以像使用 tj_mon 一样调用它
    • @Sandip Mahto, str obj 方法不仅需要对象。您的答案将打印&lt;Lessons:Studentname1 at Time on Day&gt;
    猜你喜欢
    • 2019-11-14
    • 2013-07-27
    • 1970-01-01
    • 1970-01-01
    • 2020-09-22
    • 2017-04-10
    • 2018-07-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多