DRF: Can't create object null. Error: value in column "network_from_id" violates not-null constraint

DRF: Can't create object null. Error: value in column "network_from_id" violates not-null constraint

我想创建 Transaction 对象。但是有错误:

django/db/backends/utils.py", line 84, in _execute
    return self.cursor.execute(sql, params)
django.db.utils.IntegrityError: null value in column "network_from_id" violates not-null constraint
DETAIL:  Failing row contains (6, 12, null, null).

我的代码有什么问题?使用 ModelViewSet 创建对象的正确方法是什么?

我的代码: models.py

class Networks(models.Model):
    Name = models.CharField(max_length=50)
    ...

class Transaction(models.Model):
    network_from = models.ForeignKey(Networks, on_delete=models.DO_NOTHING)
    network_to = models.ForeignKey(Networks, on_delete=models.DO_NOTHING)
    ...

view.py

class TransactionView(viewsets.ModelViewSet):
    serializer_class = TransactionSerializer
    queryset = Transaction.objects.all()

    def get_transaction_create_serializer(self, *args, **kwargs):
        serializer_class = TransactionSerializer
        kwargs["context"] = self.get_serializer_context()
        return serializer_class(*args, **kwargs)


    def create(self, request, *args, **kwargs):
        serializer = self.get_transaction_create_serializer(data=request.data)
        serializer.is_valid(raise_exception=True)
        self.perform_create(serializer)
        headers = self.get_success_headers(serializer.data)
        response = {"result": serializer.data}
        return Response(
            response, status=status.HTTP_201_CREATED, headers=headers
        )

serializers.py

class TransactionSerializer(serializers.ModelSerializer):
    network_from = serializers.SerializerMethodField()
    network_to = serializers.SerializerMethodField()

    class Meta:
        model = Fee
        fields = '__all__'
    
    def create(self, validated_data):
        instance = super().create(validated_data=validated_data)
        return instance
    

def get_network_from(self, obj): 网络 = obj.network_from return NetworksSerializer(网络).data

    def get_network_to(self, obj):
        network = obj.network_to
        return NetworksSerializer(network).data

如果您接受特定关系中的 None 值,请为字段添加 null=True

network_from = models.ForeignKey(Networks, on_delete=models.DO_NOTHING, null=True)
network_to = models.ForeignKey(Networks, on_delete=models.DO_NOTHING, null=True)