2013-11-21 3 views
2

Как я могу изменить [book must etc...] с реальным кодом Джанго в этом сценарии:Model.objects.filter ([иностранная таблица]) обновление()

Book.objects.filter(processed=True, [book must have all the volumes belonging to it with property is_file_processed set to True]).update(status="PU") 

Модель:

class Book(models.Model): 
    title = models.CharField(max_length=100, blank=True) 
    ... 


class Volume(models.Model): 
    file = models.FileField(...) 
    ... 
    is_file_processed = models.BooleanField(default=False) 
    book = models.ForeignKey(Book) 

ответ

1

В связи с тем, что множество всех книг, имеющих все объемами обработанных равно результатом, что множество всех книг, имеющих по меньшей мере один объемом обработанного вычитает набор всех книг, имеющие необработанный тома:

Book.objects.filter(processed=True, volume__is_file_processed=True).exclude(volume__is_file_processed=False).update(status="PU") 
# Or  
Book.objects.exclude(volume__is_file_processed=False).filter(processed=True, volume__is_file_processed=True).update(status="PU") 
1

Смотрите, docs , Я думаю, что это может сработать.

class Book(models.Model): 
    title = models.CharField(max_length=100, blank=True) 
    ... 


class Volume(models.Model): 
    file = models.FileField(...) 
    ... 
    is_file_processed = models.BooleanField(default=False) 
    book = models.ForeignKey(Book, related_name='volumes') 

Book.objects.filter(processed=True, volumes__is_file_processed=True).update(status="PU") 
Смежные вопросы