无法从预取的模型访问带注释的字段



我有两种型号:

class Training(models.Model):
"""Training records Model."""

class PersonTraining(models.Model):
"""Saves the trainings, the employee has completed or is enrolled in."""
employee = models.ForeignKey(Person, related_name='records', on_delete=models.CASCADE)
training = models.ForeignKey(Training, related_name='person_training', on_delete=models.CASCADE)

PersonTrainingView(viewsets.ModelViewSet(get_queryset方法中,我用"average_rating">‘is_top_rated’字段注释了Training模型的对象

然后我在PersonTraining查询集中预取了训练模型:

person_training_queryset = person_training_queryset.prefetch_related(
Prefetch('training', queryset=annotated_trainings)
)

问题是,我需要根据预取的Training模型的注释字段将PersonTrainingqueryset排序为:

person_training_queryset = person_training_queryset.order_by('-training__is_top_rated', '-training__average_rating')

但在get_queryset方法中执行期间无法访问它,并抛出

django.core.exceptions.FieldError: Cannot resolve keyword

请提出解决方案。

注意:我没有用‘average_rating’"s_top_rated">字段注释PersonTraining查询集,因为我需要在PersonTraining查询集中应用不同的字段它将通过

'Error: annotate() + distinct(fields) is not implemented.'

+1面临同样的问题。我将在Prefetch类中使用的查询集本身与带注释的字段一起正常工作,但在预取它的最终查询集中则不然。因此,嵌套对象没有注释所需的属性。

最新更新