DRF ограничение данных во views
Пытаюсть обрезать данные для АПИ, что бы поле is_show = 0 не отображалось в ответе АПИ. Но не получается, данные всё равно выводятся в АПИ.
Файл models.py
class Book(models.Model):
book_number = models.IntegerField(blank=False, null=False)
name = models.CharField(max_length=255, blank=False, null=False)
language = models.CharField(max_length=255, blank=False, null=False)
short_desc = models.CharField(max_length=255, blank=False, null=False)
old_version = models.CharField(max_length=255, blank=True, null=True)
created_by = models.IntegerField(blank=False, null=False)
class Price(models.Model):
book = models.ForeignKey(Book, related_name='book_id', blank=False, null=False, on_delete=models.DO_NOTHING)
price = models.FloatField(blank=False, null=False)
price_date = models.DateTimeField(blank=False, null=False)
is_discont = models.IntegerField(blank=True, null=True)
is_show = models.IntegerField(blank=False, null=False)
class Store(models.Model):
price = models.ForeignKey(Price, related_name='price_id' blank=False, null=False, on_delete=models.DO_NOTHING)
store_name = models.CharField(max_length=255, blank=False, null=False)
store_location = models.CharField(max_length=255, blank=False, null=False)
is_show = models.IntegerField(blank=False, null=False)
файл serializers.py
class StoreSerializer(serializers.ModelSerializer):
class Meta:
model = Store
fields = [
'store_name',
'store_location',
'is_show',
]
class PriceSerializer(serializers.ModelSerializer):
store = StoreSerializer(
source='price_id',
many=True
)
class Meta:
model = Price
fields = [
'price',
'price_date',
'is_discont',
'is_show',
'store',
]
class ViewBookListSerializer(serializers.ModelSerializer):
price = PriceSerializer(
source='book_id',
many=True
)
class Meta:
model = Book
fields = [
'book_number',
'name',
'language',
'short_desc',
'old_version',
'created_by',
'price',
]
Файл views.py
class BookFullList(generics.ListAPIView):
serializer_class = ViewBookListSerializer
def get_queryset(self):
user = self.request.user
data = Book.objects.filter(created_by=user, book_id__is_show=1, book_id__price_id__is_show=1)
return data
Результат ответа
{
'book_number': 231241,
'name': 'Pt all test',
'language': 'UA',
'short_desc': 'this test',
'old_version': 'test',
'created_by': 1,
'price': [
{
'book': 1,
'price': 231,
'price_date':
'2020-11-10',
'is_discont': 'True'
'is_show': 1,
'store':[{
'price': 1,
'store_name': 535223,
'store_location': "Kyiv",
'is_show': 1
},
{
'price': 1,
'store_name': 5353333,
'store_location': "Odessa",
'is_show': 0
},
{
'price': 1,
'store_name': 535231,
'store_location': "Lviv",
'is_show': 1
},
]
},
{
'book': 231241,
'price': 111,
'price_date': '2020-11-10',
'is_discont': 'True'
'is_show': 0
'store':[{
'price': 1,
'store_name': 535223,
'store_location': "Kyiv"
}
]
},
]
}
А должен быть вот такой результат. Подскажите, что делаю не так ?
{
'book_number': 231241,
'name': 'Pt all test',
'language': 'UA',
'short_desc': 'this test',
'old_version': 'test',
'created_by': 1,
'price': [
{
'book': 1,
'price': 231,
'price_date':
'2020-11-10',
'is_discont': 'True'
'is_show': 1,
'store':[{
'price': 1,
'store_name': 535223,
'store_location': "Kyiv",
'is_show': 1
},
{
'price': 1,
'store_name': 535231,
'store_location': "Lviv",
'is_show': 1
},
]
},
]
}