Python 如何在Django中为我的客户和订单模型创建ModelViewSet?
所以我有一个客户模型Python 如何在Django中为我的客户和订单模型创建ModelViewSet?,python,django,django-rest-framework,Python,Django,Django Rest Framework,所以我有一个客户模型 class Customer(models.Model): first_name = models.CharField(max_length=50) last_name = models.CharField(max_length=50) email = models.EmailField() address = models.CharField(max_length=250) postal_code = models.CharFiel
class Customer(models.Model):
first_name = models.CharField(max_length=50)
last_name = models.CharField(max_length=50)
email = models.EmailField()
address = models.CharField(max_length=250)
postal_code = models.CharField(max_length=20)
city = models.CharField(max_length=100)
created = models.DateTimeField(auto_now_add=True)
updated = models.DateTimeField(auto_now=True)
class Meta:
ordering = ('-created',)
和OrderItem模型
class OrderItem(models.Model):
order = models.ForeignKey(Customer, on_delete=models.SET_DEFAULT, default=1)
product = models.ForeignKey(Product, on_delete=models.SET_DEFAULT, default=1)
quantity = models.PositiveIntegerField(default=1)
ready = 1
on_its_way = 2
delivered = 3
STATUS_CHOICES = (
(ready, 'ready'),
(on_its_way, 'on its way'),
(delivered, 'delivered'),
)
status = models.SmallIntegerField(choices=STATUS_CHOICES)
created = models.DateTimeField(auto_now_add=True)
class Meta:
ordering = ('-created',)
我按客户模型创建了另一个模型
class ByCustomer(models.Model):
name = models.ForeignKey(Customer, on_delete=models.CASCADE)
orders = models.ForeignKey(OrderItem, on_delete=models.CASCADE)
我想将其转换为ModelViewSet,其中仅显示所选客户的订单
class By_Customer_View(viewsets.ModelViewSet):
# code let's you select only one customer
# and returns all the Orders that customer has
我在@api\u视图中看到过类似的内容
@api_view(['GET'])
def by_customer(request, pk):
tasks = ByCustomer.objects.get(name=pk)
serializer = ByCustomerSerializer(tasks, many=False)
return Response(serializer.data)
这将如何与ModelViewSet一起工作?我无法在(viewsets.ModelViewSet,pk)上添加额外参数。我还应该添加哪些字段?我缺少哪些字段?ModelViewSets仍然是新手,所以我不知道它的局限性。如果ModelViewSet对此没有解决方案。我需要在上面的@api_视图代码中更改什么?谢谢。重写modelviewset的
get\u queryset()
方法。你是什么意思?用什么覆盖查询集?