如何将json传递给序列化程序以存储在模型中

问题描述 投票:0回答:1

我的记录/ model.py是,

class HistoricalRecords(models.Model):
    user = models.ForeignKey('User', on_delete=models.CASCADE, null=True, blank=True)
    role = models.CharField(max_length=255, null=True, blank=True)
    model = models.CharField(max_length=255, null=True, blank=True)
    torque = models.IntegerField(null=True, blank=True)
    car = models.TextField(null=True, blank=True)
    date_time = models.DateTimeField(default=timezone.now)

我的记录/ serializer.py是

class SaveAuditRecordSerializer(serializers.ModelSerializer):
    class Meta:
        model = HistoricalRecords
        fields = ('user', 'role', 'model', 'torque', 'car', 'date_time')

和我的记录/ views.py是,

def AuditRecord(request):

    serializer = SaveAuditRecordSerializer(data=request, partial=True)
    if serializer.is_valid():
        serializer.save()

        return Response(status=status.HTTP_201_CREATED)
    return Response(serializer.errors,
                    status=status.HTTP_201_CREATED)

我试图从另一个应用程序的另一个视图中调用这个AuditRecord(req),比如

rec = {}
audit_record['user'] = request.user
audit_record['role'] = "Role"
audit_record['model'] = "M"
audit_record['torque'] = 22222
audit_record['action'] = "car created"
audit_record['date_time'] = datetime.now()
AuditRecord(audit_record)

我没有得到任何错误,但它没有得到保存到db我的approch有任何错误?

django python-3.x django-rest-framework django-views serializer
1个回答
0
投票

如果您的其他应用程序中有一个指向AuditRecord的模型,并且您想在其创建点上创建记录,则可以使用此其他应用程序的序列化程序来创建AuditRecord的实例。

OtherSerializer(serializers.Serializer):
    audit_record = AuditRecordSerializer(required=False, write_only=True)

    def create(self, validated_data):
        audit_record_data = validated_data.pop('audit_record')

        audit_record = AuditRecordSerializer().create(audit_record_data)
        validated_data.update({'audit_record': audit_record})

        return super(OtherSerializer, self).create(validated_data)
© www.soinside.com 2019 - 2024. All rights reserved.