我有問題篩選django-models
和我使用django-rest-framework
工作這個序列化的數據。反向過濾Django模型與DRF
我想在這裏得到的所有羣都記錄動物可能有一個species_type='Cow'
或一個空的羣的動物。
這是我的模特。
models.py
class Herd(models.Model):
name = models.CharField(max_length=25)
description = models.TextField(max_length=250, null=True)
created_at = models.DateTimeField(auto_now_add=True, editable=False)
updated_at = models.DateTimeField(auto_now=True, editable=False)
class Animal(models.Model):
name = models.CharField(max_length=25)
species_type = models.CharField(max_length=25)
breed = models.CharField(max_length=25)
herd = models.ForeignKey(Herd, related_name='animals', on_delete=models.CASCADE)
created_at = models.DateTimeField(auto_now_add=True, editable=False)
updated_at = models.DateTimeField(auto_now=True, editable=False)
serializers.py
class AnimalSerializer(serializers.ModelSerializer):
class Meta:
model = Animal
fields = [
'name',
'species_type',
'breed'
]
read_only_fields = ['id', 'created_at', 'updated_at']
class HerdSerializer(serializers.ModelSerializer):
animals = AnimalSerializer(many=True, read_only=True)
class Meta:
model = Herd
fields = [
'id',
'name',
'description',
'animals'
]
read_only_fields = ['created_at', 'updated_at']
這是我的視圖集中其處理所有CRUD操作。
views.py
class HerdViewset(viewsets.ModelViewSet):
"""
This viewset automatically provides `list`, `create`, `retrieve`,
`update` and `destroy` actions.
"""
queryset = Herd.objects.all()
serializer_class = HerdSerializer
現在,當我瀏覽HerdViewSet
端點/api/herd/
我得到了與動物或空牛羣(S)的所有牛羣的結果。但在一些放養的動物不過濾species_type='Cow'
仍然會返回屬於那個牛羣是否species_type
是山羊,綿羊,等所有的動物..
你在哪兒做了過濾器'species_type ='Cow''? – Enix
@Enix嗨,它應該在這一行'queryset = Herd.objects.all()'在視圖中,但遺憾的是我仍然沒有任何想法如何做到這一點,因爲我的'Herd'模型中沒有野外動物不像在我的'HerdSerializer'中。 –
@ ShiftN'Tab如果您需要根據species_type ='Cow'動物過濾所有的牧羣數據,那麼您需要更新模型結構和字段之間的關係。 –