Django更新了跨越关系

时间:2015-02-26 01:17:48

标签: django django-queryset django-related-manager

我想运行一个跨越多个实现的更新查询。这可能与django?这就是我的尝试:

from django.db.models import F

Transaction.objects.filter(pk__lt=10).update(
    page__total_earned=F('page__total_earned')+5,
    page__profile__balance=F('page__profile__balance')+5
)

以下是我的模型的一瞥,以防您想知道:

class Transaction(models.Model):
    page = models.ForeignKey(Page, related_name='transactions', null=True, blank=True)

class Page(models.Model):
    profile = models.ForeignKey('Profile', related_name='pages', blank=True, null=True)
    total_earned = models.IntegerField(default=0)

class Profile(models.Model):
    balance = models.IntegerField(default=0, db_index=True)

1 个答案:

答案 0 :(得分:0)

来自Django docs

Entry.objects.update(blog__name='foo') # Won't work!
  

立即应用update()方法,并且唯一的限制是   更新的QuerySet是它只能更新中的列   模型的主表,而不是相关模型

所以答案不是,你不能这样做。