Как передать JSON в сериализатор для хранения в модели - PullRequest
0 голосов
/ 29 апреля 2019

моя запись / 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)

Я не получаю никакой ошибки, но она не сохраняется в БД есть ли ошибка в моем подходе?

1 Ответ

0 голосов
/ 29 апреля 2019

Если в вашем другом приложении есть модель, которая указывает на ваш 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)
...