Как создать новый ресурс с внешним ключом в TastyPie

Я все еще новичок в вкусных пирогах, но это похоже на действительно аккуратную библиотеку. К сожалению, у меня есть некоторые трудности с этим.

У меня есть две модели и два ресурса, связанных с этими моделями:

class Container(models.Model):
    pass

class ContainerItem(models.Model):
    blog = models.ForeignKey('Container', related_name='items')

# For testing purposes only
class ContainerResource(ModelResource):
    class Meta:
        queryset = Container.objects.all()
        authorization = Authorization()

class ContainerItemResource(ModelResource):
    class Meta:
        queryset = ContainerItem.objects.all()
        authorization = Authorization()

Я создал Container Объект через JQuery:

var data = JSON.stringify({});

$.ajax({
    url: 'http://localhost:8000/api/v1/container/',
    type: 'POST',
    contentType: 'application/json',
    data: data,
    dataType: 'json',
    processData: false
});

Тем не менее, когда я иду, чтобы создать ContainerItemЯ получаю эту ошибку:

container_id may not be NULL

Итак, мой вопрос: как мне создать новый ресурс, когда есть отношения ForeignKey?

1 ответ

Решение

Отношения ForeignKey не представлены автоматически в ModelResource. Вам нужно будет указать:

blog = tastypie.fields.ForeignKey(ContainerResource, 'blog')

на ContainerItemResourceи затем вы можете опубликовать URI ресурса контейнера при публикации элемента контейнера.

var containeritemData = {"blog": "/api/v1/container/1/"}
$.ajax({
    url: 'http://localhost:8000/api/v1/containeritem/',
    type: 'POST',
    contentType: 'application/json',
    data: containeritemData,
    dataType: 'json',
    processData: false
});

Для получения дополнительной информации, проверьте эти ссылки:

В этом разделе приведен пример создания основных ресурсов. Внизу они упоминают, что поля отношений не создаются автоматически посредством самоанализа:

http://django-tastypie.readthedocs.org/en/latest/tutorial.html

Здесь они добавляют пример создания поля отношения:

http://django-tastypie.readthedocs.org/en/latest/tutorial.html

Вот реклама о добавлении обратных отношений:

http://django-tastypie.readthedocs.org/en/latest/resources.html

Все документы хороши, если вы читаете их как роман, но среди них может быть трудно найти конкретные вещи.

Другие вопросы по тегам