所以我有一个客户模型。
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',)
我创建了另一个模型ByCustomer Model
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_view上看到过类似的内容
@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_view代码中进行哪些更改?谢谢。