【发布时间】:2018-08-12 08:13:12
【问题描述】:
我的环境是 Django 2.0.2 和 Python 3.6.1。
如何比较两个 Django QuerySet 并返回 QuerySet 并替换第二个中的相同值?
例如,我有查询集:
>>> qs_local = PriceLocal.objects.filter(user_id=request.user.id)
>>> print(qs_local)
[{ 'user_id': 1, 'product_id': 1, 'price': 100 }] # one record
>>> qs_world = PriceWorld.objects.all()
>>> print(qs_world)
[{ 'product_id': 1, 'price': 300 }, { 'product_id': 2, 'price': 500 }, ... ] # many records
我想比较这个 Django QuerySets 并返回 QuerySet,像这样:
[{ 'product_id': 1, 'price': 100 }, { 'product_id': 2, 'price': 500 }, ...]
此时,我们将相同的记录(使用'product_id': 1)从第二个查询集替换到第一个查询集。
编辑:
我的模型:
class PriceWorld(models.Model):
product_id = models.PositiveSmallIntegerField()
price = models.PositiveSmallIntegerField()
class PriceLocal(models.Model):
user_id = models.ForeignKey(User, on_delete=models.CASCADE)
product_id = models.ForeignKey(PriceWorld, on_delete=models.CASCADE)
price = models.PositiveSmallIntegerField()
【问题讨论】:
-
发布您的模型定义?
-
这是不可能的,因为 QuerySet 应该是一个模型,而不是多个模型的组合。
标签: python django django-queryset