所以我有几个型号......
我需要使用三个查询更新用户个人资料..
我知道如何才能做到这一点只是选择所有有工作的用户并进行迭代,但这似乎是劳动密集型的X用户量。是否有一种简单的方法,比如使用UPDATE ... WHERE查询或其他东西。
我在考虑这样的事情吗?:
yesterday = datetime.datetime.now() - datetime.timedelta(days=1)
users = User.objects.filter(
job__isnull = False,
location = job__job__location,
profile__last_online__gte = yesterday
)
问题是你不能在job__job__location位
使用字段答案 0 :(得分:1)
您只能更新要更新的模型上的字段,因此您的查询必须位于UserJob
对象上。在没有您的模型定义的情况下,我没有确切的关系,但这或其他关闭应该有效:
UserJob.objects.filter(
user__location = F('job__location'),
user__profile__last_online__gte = yesterday
).update(
days_worked = F('days_worked') + 1,
points = F('points') + 1
)
答案 1 :(得分:0)
我想这应该可以解决你的问题:
一次更新多个对象:
https://docs.djangoproject.com/en/dev/topics/db/queries/#updating-multiple-objects-at-once
F表达式:请参阅WHERE子句中的模型值:
https://docs.djangoproject.com/en/dev/topics/db/queries/#using-f-expressions-in-filters