gpt4 book ai didi

python - 相似属性上两个查询集的 Django 交集

转载 作者:行者123 更新时间:2023-11-28 17:36:35 31 4
gpt4 key购买 nike

我在 Django 中有两个模型,我不确定如何编写它们(是否有一个抽象模型并继承等等......或者有两个不同的模型)但通常我有两种类型的对象 A 和 B。

A 和 B 完全相同,因为它们只是项目。它们都具有以下属性:

名称、价格

现在我想比较 A 和 B 中的所有相似项(相似项是具有相同名称的项)并查看它们之间的价格差异(注意:假设没有重复项,但假设交集包含可能不在 A 或 B 或两者中的项目,这意味着 A 和 B 不是相同的数据集,因此 A 可能有 20 个项目,但 B 可能有第643章

我如何在 Django 中使用模型等...

最佳答案

根据您的评论,我认为您只需要一个模型,并使用 vendor 字段来区分它们

class Product(models.Model):
VENDOR_CHOICES = (
('a', 'Vendor A'),
('b', 'Vendor B')
)
# you may find it more appropriate to have a ForeignKey to
# a Vendor model instead of this choice field:
vendor = models.CharField(max_length=16, choices=VENDOR_CHOICES)
name = models.CharField(max_length=255)
price = models.DecimalField(max_digits=6, decimal_places=2)

然后就可以得到任意两个供应商的差价(Django 1.8):

from django.db.models import Func, F

prices = (
Product.objects
.filter(vendor__in=('a', 'b'))
.order_by('name', 'vendor') # order rows within each group
.values('name') # GROUP BY `name`
.annotate(
first_vendor_price=Func(F('price'), function='FIRST'),
second_vendor_price=Func(F('price'), function='LAST')
)
)

price_diffs = {
group['name']: group['first_vendor_price'] - group['second_vendor_price']
for group in prices
}

关于python - 相似属性上两个查询集的 Django 交集,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29847752/

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