Django Rest Framework:可写嵌套序列化器获取或创建

had*_*ulo 5 python django-rest-framework

我正在尝试创建一个可写的嵌套序列化器,如果外键对象不存在,则创建外键对象,有点像这样:

class A(models.Model):
    x = models.CharField()

class B(models.Model):
    a = models.ForeignKey(A)
    y = models.CharField()

class ASerializer(serializers.ModelSerializer):
    class Meta:
        model = A

class BSerializer(serializers.ModelSerializer):
    a = ASerializer()

    class Meta:
        model = B

    def create(self, validated_data):
        a_data = validated_data.pop('a', None)

        try:
            a = A.objects.get(x=a_data.get('x', None))
        except A.DoesNotExist:
            a = A.objects.create(**a_data)

        b = B.objects.create(a=a, **validated_data)
        return b
Run Code Online (Sandbox Code Playgroud)

我希望能够接受 POST 请求,以检查 A 的实例是否已存在。如果没有,它会自动创建它并将其与 B 关联。这是正确的方法吗?我的帖子刚刚收到错误 500。我已经被困了一天不知道如何解决这个问题。需要帮助,非常感谢,谢谢!