Django REST框架交叉模型端点

时间:2018-03-16 20:26:31

标签: django django-rest-framework

我们说我有这3个模型

class Restaurant(models.Model):
   name = models.CharField(...)

class Eater(models.Model):
   name = models.CharField(...)

class Transaction(models.Model):
   eater = models.ForeignKey('Eater', related_name='transactions')
   restaurant = models.ForeignKey('Restaurant', related_name='transactions')

如何编写eater/1/restaurant这样的端点来查询eater1与之交易的所有餐厅?

如果重要的话,我的数据库在PostgreSQL中。

2 个答案:

答案 0 :(得分:0)

您可以简单地将交易模型用于相同的

Transaction.objects.filter(eater=eater1).values('restaurant')

希望它会对你有所帮助。

答案 1 :(得分:0)

我想我可以做到

@detail_route(methods=['get'], url_path='restaurants')
def eater_resturants(request, eater_id):
    res = Restaurant.objects.filter(transactions__eater_id=eater_id)
    serializer = RestaurantSerializer(deals, many=True)

    return Response(serializer.data)