Не удалось передать последний вставленный_идентификатор из родительского сериализатора в дочерний сериализатор с помощью Django restframework - PullRequest
0 голосов
/ 30 января 2019

Я пытаюсь сохранить родительскую (VisVisits) и дочернюю (VisVistiData) таблицу с одним и тем же вызовом API.Данные поступают в формате JSON.Я могу сохранить обе таблицы, кроме одного столбца visit_id в дочерней таблице (VisVisitData).visit_id не приходит от JSON.Это поле типа автоматического номера в родительской таблице (VisVisits), и я хочу взять visit_id из родительской (после вставки) таблицы и сохранить его в свои дочерние идентификаторы с другим столбцом в дочерней таблице (VisVisitData)

Мне действительно нужна помощь, чтобы решить эту проблему.

Сериализатор

class VisVisitsSerializer(serializers.ModelSerializer):

    data = VisVisitDataSerializer(many=True)

    class Meta:
        model = VisVisits
        fields = ('visit_id','user','data')
        read_only_fields = ['visit_id']

    def create(self, validated_data):
        visits_data = validated_data.pop('data')
        visit = VisVisits.objects.create(**validated_data)
        for visit_data in visits_data:
            VisVisitData.objects.create(visit_id=visit.visit_id, **visit_data)
        return visit


class VisVisitDataSerializer(serializers.ModelSerializer):
    class Meta:
        model = VisVisitData
        fields = ('__all__')

модель

class VisVisits(models.Model):
    visit_id = models.IntegerField(primary_key=True,auto_created=True)
    user = models.ForeignKey(UsrUsers, models.DO_NOTHING, blank=False, null=False)

    def __str__(self):
        return str(self.visit_id)

class VisVisitData(models.Model):
    vdata_id = models.IntegerField(primary_key=True,auto_created=True)
    visit = models.ForeignKey('VisVisits', models.DO_NOTHING, blank=True, null=True, related_name='data')

    def __str__(self):
        return str(self.vdata_id)

JSON

{
  "user": "1",
  "visits": [
    {
      "action": "i",
      "local_id": "170",

      "data": [
        {
          "Active": "1",
          "LocalID": "1905",
          "VisitDataID": "",
        },
        {
          "Active": "1",
          "LocalID": "1906",
          "VisitDataID": "",
        },
        {
          "Active": "1",
          "LocalID": "1907",
          "VisitDataID": "",
        },
        {
          "Active": "1",
          "LocalID": "1908",
          "VisitDataID": "",
        },
        {
          "Active": "1",
          "LocalID": "1909",
          "VisitDataID": "",
        }
    ]
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...