@JonGalt

Почему не работает prefetch_related?

Приветствую
Есть следующие модели
class EsPosition(MPTTModel):
    estimate = models.ForeignKey(Estimate, related_name='es_positions')
    parent = TreeForeignKey('self', null=True, blank=True, verbose_name=u'Родитель', related_name='children')
    number = models.CharField(verbose_name='№ п/п', max_length=128)
    name = models.TextField(verbose_name='Наименование работы')

class EsAct(models.Model):
    estimate = models.ForeignKey(Estimate, related_name='es_acts')
    number = models.CharField(max_length=3, verbose_name='Номер')

class EsActPosition(models.Model):
    es_act = models.ForeignKey(EsAct, related_name='es_positions')
    es_position = models.ForeignKey(EsPosition, verbose_name='Наименование работы')
    es_count = models.FloatField(verbose_name='Количество', null=True, blank=True)

Делаю запрос на выборку всех EsPosition которые есть в EsAct с id=4, а значения EsPosition которых нет в этом акте должны быть пустыми
prefetch = Prefetch('esactposition_set', queryset=EsActPosition.objects.filter(es_act_id=4))
es_pos = EsPosition.objects.filter(estimate=est).prefetch_related(prefetch).values('name', 'number',
                                                                                     'esactposition__es_act__number',
                                                                                      'esactposition__es_act__id',
                                                                                      'esactposition__es_count',
                                                                                      'esactposition__amount')

но фильтр в prefetch почему-то не срабатывает и в выборке доавляются все EsAct а не только с id=4
  • Вопрос задан
  • 287 просмотров
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы