RelatedObjectDoesNotExist при вложении данных в DRF - PullRequest
0 голосов
/ 08 февраля 2019

Я пытаюсь сериализовать модель с вложенными данными для ее отношений.Данные возвращаются правильно в GET-запросе, но при попытке POST-данных возвращается следующая ошибка: api.models.Narration.narrative.RelatedObjectDoesNotExist: Narration has no narrative. Меня не интересует POSTing вложенных данных, их нужно только возвращать в GET-запросах, а PK можно использовать везде, где угодно,Я попытался использовать Meta.depth, а также определить поля вручную, оба из которых возвращают одно и то же исключение.Код приведен ниже, приветствуется любая помощь.

# serializers.py
class NarrationSerializer(ModelSerializer):
    narrative = NarrativeSerializer(read_only=True)
    settings = MapSettingsSerializer(read_only=True)
    attached_events = CachedDataSerializer(many=True, read_only=True)

    class Meta:
        model = Narration
        fields = "__all__"
        # depth = 1 [also doesn't work]

# models.py
class Narration(OrderedModel):
    narrative = models.ForeignKey(Narrative, on_delete=models.CASCADE)
    title = models.TextField()
    description = models.TextField()
    date_label = models.CharField(max_length=100)
    map_datetime = models.DateTimeField()
    attached_events = models.ManyToManyField(CachedData)
    img = models.URLField(blank=True, null=True)
    video = models.URLField(blank=True, null=True)
    settings = models.ForeignKey(MapSettings, on_delete=models.CASCADE)

    order_with_respect_to = "narrative"

# views.py
class NarrationViewSet(viewsets.ModelViewSet):
    queryset = Narration.objects.all()
    serializer_class = NarrationSerializer

POST-вложенные данные (с использованием PK в том же исключении):

{
  "title": "cvxcv",
  "description": "cxvxcv",
  "date_label": "test",
  "map_datetime": "0002-01-01T00:00:00Z",
  "img": "",
  "video": "",
  "narrative": {
    "author": "Test Author",
    "title": "Test Narrative",
    "description": "This is a test narrative.",
    "tags": [
      "test",
      "tags"
    ]
  },
  "settings": {
    "bbox": {
      "type": "MultiPoint",
      "coordinates": [
        [
          0,
          0
        ],
        [
          1,
          1
        ]
      ]
    },
    "zoom_min": 1,
    "zoom_max": 12
  },
  "attached_events": [
    {
      "event_type": 178561,
      "wikidata_id": 1,
      "location": {
        "type": "Point",
        "coordinates": [
          0,
          0
        ]
      },
      "date": "0001-01-01",
      "rank": 830700
    }
  ]
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...