gpt4 book ai didi

python - 使用 ORM django 选择 (select ..)

转载 作者:行者123 更新时间:2023-12-01 03:55:12 27 4
gpt4 key购买 nike

如何进行查询

select  name where id in (select id from ...)

使用 Django ORM?我想我可以使用一些循环来获取一些结果,然后使用另一个循环来使用这个结果,但我认为这不是实际的工作,更简单的是制作一个查询sql,我认为在python中制作这个应该是python 更简单

我有这些模型:

class Invoice (models.Model):
factura_id = models.IntegerField(unique=True)
created_date = models.DateTimeField()
store_id = models.ForeignKey(Store,blank=False)

class invoicePayments(models.Model):
invoice = models.ForeignKey(Factura)
date = models.DateTimeField()#auto_now = True)
money = models.DecimalField(max_digits=9,decimal_places=0)

我需要按 store_id、付款日期获取发票过滤器的付款。我使用 select in (select ...) 在 mysql 中进行此查询。这是一个简单的查询,但使用 django orm 进行一些类似的查询,我只想并进行一些循环,但我不喜欢这个想法:

invoiceXstore = invoice.objects.filter(local=3)

for a in invoiceXstore:
payments = invoicePayments.objects.filter(invoice=a.id,
date__range=["2016-05-01", "2016-05-06"])

最佳答案

您可以在 Django ORM 中使用双下划线 (__) 遍历 ForeignKey 关系。例如,您的查询可以实现为:

payments = invoicePayments.objects.filter(invoice__store_id=3, 
date__range=["2016-05-01", "2016-05-06"])

我猜你在在这里发帖之前将你的类(class)重命名为英语。在这种情况下,您可能需要将第一部分更改为 factura__local=3

顺便说一句,建议将您的模型类重命名为 InvoicePayments(大写的 I),以便更符合 PEP8 .

关于python - 使用 ORM django 选择 (select ..),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37604443/

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