Trong Django Rest Framework, làm cách nào để lọc một bộ tuần tự khi nó được lồng trong một bộ nối tiếp khác?
Các bộ lọc của tôi được áp dụng trong các bộ xem DRF, nhưng khi bạn gọi một bộ nối tiếp từ bên trong một bộ nối tiếp khác, bộ xem của bộ nối tiếp lồng nhau sẽ không bao giờ được gọi, vì vậy các kết quả lồng nhau sẽ không được lọc.
Tôi đã thử thêm một bộ lọc trên tập hợp chế độ xem gốc, nhưng dường như nó không lọc được các kết quả lồng nhau vì các kết quả lồng nhau được gọi là một truy vấn được viết sẵn riêng biệt. (Bộ nối tiếp lồng nhau là một tra cứu ngược, bạn thấy đấy.)
Có thể thêm ghi đè get_queryset () trong chính bộ tuần tự lồng nhau (di chuyển nó ra khỏi chế độ xem), để thêm bộ lọc vào đó không? Tôi cũng đã thử mà không gặp may.
Đây là những gì tôi đã thử, nhưng nó thậm chí không được gọi là:
class QuestionnaireSerializer(serializers.ModelSerializer):
edition = EditionSerializer(read_only=True)
company = serializers.StringRelatedField(read_only=True)
class Meta:
model = Questionnaire
def get_queryset(self):
query = super(QuestionnaireSerializer, self).get_queryset(instance)
if not self.request.user.is_staff:
query = query.filter(user=self.request.user, edition__hide=False)
return query
get_queryset
là một lớp trênModelViewSet
, không phải trên Serializer, đó là lý do tại sao nó không nhận được gọi là