分析
总而言之,应该预期以下内容会起作用,并在下面提供解决方案。我已经留下了这个问题,以防其他人迷失在这个问题上。
原始问题
在 Django M2M 教程中,我们有披萨和配料。作为我的应用程序的一部分,我有 M2M 字段的浇头和添加新浇头的端点。但是,我只想添加不存在的浇头,否则我只想返回现有的浇头。这是为了避免 Pizzas 和 Toppings 之间的嵌套 M2M 关系导致问题,而是我有两个端点,一个用于比萨饼,一个用于浇头,然后将浇头添加post_save
到视图中。
但是,以下似乎不起作用:
class ToppingSerializer(serializers.ModelSerializer):
another_model = serializers.PrimaryKeyRelatedField()
class Meta:
model = Topping
fields = ('id', 'another_model', 'name')
def save_object(self, obj, **kwargs):
topping = Topping.objects.get_or_create(another_model=obj.another_model,
name=obj.name)
return topping
查看代码如下:
[snip - View code below]
serializer_class = ToppingSerializer
serializer = self.get_serializer(data=request.DATA, many=True)
if serializer.is_valid():
serializer.save()
return Response(status=status.HTTP_201_CREATED)
[snip]