我想列出所有保存到某個動物的實體。假設一只狗的 id 為 3,我有 2 個狗性別的實體,但是當我收到來自 animal/3/sex 的請求時,我只得到一個實體而不是 2。我嘗試使用 many=True 到 serializers.PrimaryKeyRelatedField 但它告訴我'動物不可迭代'。你知道怎么做嗎?
class AnimalSex(models.Model):
name = models.CharField(max_length=256)
slug = models.SlugField(max_length=128, unique=True, null=False, editable=False)
created_at = models.DateTimeField(editable=False, default=timezone.now)
updated_at = models.DateTimeField(default=timezone.now)
animal = models.ForeignKey(Animal, on_delete=models.CASCADE, null=False)
意見
class MyAnimalSex(generics.RetrieveAPIView):
queryset = AnimalSex.objects.all()
serializer_class = AnimalSexSerializer
lookup_field = 'pk'
序列化器
class AnimalSexSerializer(serializers.ModelSerializer):
animal = serializers.PrimaryKeyRelatedField(read_only=True)
class Meta:
model = AnimalSex
fields = ('name', 'slug', 'animal',)
網址
path('animal/<int:pk>/sex', MyAnimalSex.as_view()),
uj5u.com熱心網友回復:
在這種情況下,您可能希望使用ListAPIView基于 的主鍵的 and 過濾器Animal,因此:
class MyAnimalSex(generics.ListAPIView):
queryset = AnimalSex.objects.all()
serializer_class = AnimalSexSerializer
def get_queryset(self):
return super().get_queryset().filter(
animal_id=self.kwargs['pk']
)
轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/418253.html
標籤:
