gpt4 book ai didi

python - ManytoMany 与 django Rest 相关

转载 作者:行者123 更新时间:2023-12-01 09:21:45 26 4
gpt4 key购买 nike

模式.py

class Product(models.Model):
product_name = models.CharField(max_length=32)
quantity = models.IntegerField()
remarks = models.TextField(blank=True)

class Vendor(models.Model):
vendor_name = models.CharField(max_length=50)
address = models.CharField(max_length=100)
bill_no = models.CharField(max_length=8)
product = models.ManyToManyField(Product)

序列化器.py

class ProductSerializer(serializers.ModelSerializer):
class Meta:
model = Product
fields = '__all__'

class VendorSerializer(serializers.ModelSerializer):
product = ProductSerializer(many=True, read_only=False)
class Meta:
model = Vendor
fields = '__all__'
def create(self, validate_data):
product_data = validate_data.pop('product')
vendor = Vendor.objects.create(**validate_data)
for product_data in product_data:
Product.objects.create(vendor=vendor, **product_data)
return Vendor

views.py

class VendorViewset(viewsets.ModelViewset):
serializer_class = VendorSerializer
queryset = Vendor.objects.all()

我应该如何编写产品 View ,以便可以证明某些供应商的产品只能通过 url 路由查看?

最佳答案

您可以使用@detail_route:

from rest_framework.decorators import detail_route

class VendorViewset(viewsets.ModelViewset):
serializer_class = VendorSerializer
queryset = Vendor.objects.all()

@detail_route(methods=['GET'])
def products(request, pk=None):
qs = self.get_object().product.all()
serializer = ProductSerializer(qs, many=True)
return Response(serializer.data)

然后供应商产品将在

之前提供
YOUCURRENT_PATH_TO_DETAIL_VENDOR/products

关于python - ManytoMany 与 django Rest 相关,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50756193/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com