2015-02-26 6 views
0

Я хотел бы запустить запрос обновления, который охватывает несколько realtionships. Возможно ли это с django? Это то, что я пробовал:Django обновляет те отношения span

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) 

ответ

0

От Джанго docs.

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

Обновление() метод применяется мгновенно, и единственным ограничением на в QuerySet, который обновляется в том, что он может обновить только столбцы в основной таблице в модели, а не на родственных моделей

Итак, ответ не таков, вы не можете сделать это таким образом.

+0

Хороший глаз. Я удивлен, что не видел этого. Я приму это через 6 мин. –

Смежные вопросы