Django Rest Как вызвать объекты, которые находятся под моим объектом ссылки?
Я не могу назвать фильмы под режиссером. Я хочу сделать страницу, на которой вы нажмете на имя режиссера, и она покажет список фильмов, снятых этим режиссером. Ниже показаны коды для моделей, сериализаторов и представлений.
models.py
class Director(models.Model):
_id = models.AutoField(primary_key=True)
firstname = models.CharField(max_length=100, null=True, blank=True)
lastname = models.CharField(max_length=100, null=True, blank=True)
def __str__(self):
return "%s %s" % (self.firstname, self.lastname)
class Product(models.Model):
_id = models.AutoField(primary_key=True)
name = models.CharField(max_length=100, null=True, blank=True)
image = models.ImageField(upload_to=upload_image_path, null=True, blank=True)
description = models.TextField(null=True, blank=True)
director = models.ForeignKey(Director, on_delete=models.CASCADE)
def __str__(self):
return self.name
serializers.py
class ProductSerializer(serializers.ModelSerializer):
director = serializers.StringRelatedField()
class Meta:
model = Product
fields = '__all__'
class DirectorSerializer(serializers.ModelSerializer):
class Meta:
model = Director
fields = '__all__'
views.py
@api_view(['GET'])
def getProducts(request):
products = Product.objects.all()
serializer = ProductSerializer(products, many=True)
return Response(serializer.data)
@api_view(['GET'])
def getProduct(request, pk):
product = Product.objects.get(_id=pk)
serializer = ProductSerializer(product, many=False)
return Response(serializer.data)
@api_view(['GET'])
def getDirector(request):
director = Director.objects.all()
serializer = DirectorSerializer(director, many=True)
return Response(serializer.data)
Я уже пробовал то, что показано выше.
views.py
@api_view(['GET'])
def getProductsByDirector(request, director_pk):
products = Product.objects.filter(director_id=director_pk)
serializer = ProductSerializer(products, many=True)
return Response(serializer.data)
Примечание: вам не нужно добавлять поле "_id" в ваши модели, так как оно добавляется автоматически.