gpt4 book ai didi

python - 在 Django 中优化查询

转载 作者:行者123 更新时间:2023-11-29 04:36:57 25 4
gpt4 key购买 nike

我想使用 django orm 优化循环代码,因为它需要 41 个查询,因为 django-debug-toolbar 中显示了循环,我已经用 django ORM 声明了我的模型,并且有一个循环我需要使用 ORM 方法进行优化,这样我就可以避免循环。

class Bills(models.Model):
library=models.ForeignKey(Library,null=True)
customer=models.ForeignKey(Customer, null=True)
total_price = models.FloatField()
History = '1'
Physics = '2'
Maths = '3'
Book_Category=(
(History,'History'),
(Physics,'Physics'),
(Maths,'Maths')
)
book_category_type=models.CharField(max_length=2,choices=Book_Category)

这是存储特定客户的所有账单的账单模型。

class LibraryOrder(models.Model):
hotel=models.ForeignKey(Hotel,null=True)
library = models.ForeignKey(Library,null=True)
customer=models.ForeignKey(Customer,null=True)
library_item = models.ForeignKey(LibraryItem,null=True)
quantity = models.FloatField()
total_price = models.FloatField()
comments=models.TextField(null=True)
bill=models.ForeignKey(Bills,null=True)
ORDER_STATUS = (
(NOT_PROCESSED, 'NotProcessed'),
(PROCESSING, 'Processing'),
(PROCESSED,'processed'),
)
order_status = models.CharField(max_length=3, choices=ORDER_STATUS, default=NOT_PROCESSED)

当一些客户订购图书馆项目中的某本书时,这是订单模型。

现在我正在使用这个:

customers = Customer.objects.filter(library="1").exclude(customer_status='2')
bills = Bills.objects.filter(library="1", customer=customers, book_category_type="1")
for bill in bills:
# if bill.order_type == "1":
not_processed_order = LibraryOrder.objects.filter(bill=bill, order_status="1")
notprocessed_lists.append(not_processed_order)
processing_order = LibraryOrder.objects.filter(bill=bill, order_status="2")
processing_lists.append(processing_order)
processed_order = LibraryOrder.objects.filter(bill=bill, order_status="3")
processed_lists.append(processed_order)

正在循环的账单是我通过那个 orm 获取账单数组的循环,因为在图书馆订单中我有账单作为外键我正在使用它来获取订单详细信息并推送到数组以显示在html。

我想优化我指定的 django orm 方法,将两行变成单行,这些列表是分开的,因为它显示在 html 的单独选项卡中

最佳答案

not_processed_order = LibraryOrder.objects.filter(bill__library="1", bill__book_category_type="1", order_status="1", bill__customer__library='1').exclude(bill__customer__status='2')
processing_order = LibraryOrder.objects.filter(bill__library="1", bill__book_category_type="1", order_status="2", bill__customer__library='1').exclude(bill__customer__status='2')
processed_order = LibraryOrder.objects.filter(bill__library="1", bill__book_category_type="1", order_status="3", bill__customer__library='1').exclude(bill__customer__status='2')

关于python - 在 Django 中优化查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38994381/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com