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

时间:2016-07-25 08:38:20

标签: 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

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

0 个答案:

没有答案