假设我们有标准的auth.contrib
users <<-->> groups
关系。
我有
User
和
Group
实例已创建,并希望CRUD
只有关系
:
序列化程序可能如下:
class Serializer(ModelSerializer):
group = SlugRelatedField(slug_field='name', queryset=Group.objects.all())
user = SlugRelatedField(slug_field='email', queryset=User.objects.all())
class Meta:
model = Group_x_User
我找到的最接近REST API的建议是:
How to handle many-to-many relationships in a RESTful API?
dillema是m2m关系是对称的,我希望有一个端点(不那么含糊不清)。。
如何解决
GET list for user
对
GET lsit for group
? 我认为使用查询参数(因为它们没有绑定到url结构,所以它们的顺序并不重要):
所以端点url将是
/groups_x_users
通过扩展ModelViewSet并重写
get_object
和
get_queryset
(或
filter_queryset
)
但我在网上找不到这样的解决方案(通过query param)——所以
使用查询参数的缺点是什么?
(搜索引擎优化?).
注:我发现的大多数DRF示例都建议通过嵌套序列化器来实现——但这看起来太笨拙了。我只想显式地编辑关系——并且按照单个关系(为了更清楚地(in)验证处理)进行编辑。