外键关系中drf序列化器的最佳实践是什么

2024-09-30 01:19:59 发布

您现在位置:Python中文网/ 问答频道 /正文

我有两个模特班

class Parent(models.Model):
    sha256 = models.CharField(max_length=64)

class Child(models.Model):
    parent = models.ForeignKey(Parent, related_name="children")
    a = models.CharField()
    b = models.CharField()

我将要求:

(我想在找到sha256对应的父类后保存子类)

^{pr2}$

如何重写validate and create函数 如何写视图?在

我认为:

class ChildSerializer(serializer.ModelSerializer):

    def create(self, validated_data):
        sha256 = vadliated_data.pop('sha256')
        parent = Parent.objects.filter(sha256=sha256).first()
        if not parent:
            raise serializer.ValidationError('....')

        return Child.objects.create(**validated_data, parent=parent)

    class Meta:
         model = Child
         fields = ('sha256', 'a', 'b')

但是它不能正常工作…最好的方法是什么?在

这是我的观点(功能观)

@api_view(['POST'])
def test(request):
    serializer = ChildSerializer(data=request.data)
    if serialzier.is_valid(raise_exception=True)
        serializer.save()
    return Response('...')

Tags: childdatamodelobjectsmodelsdefcreateclass

热门问题