Как создать новый ресурс с внешним ключом в 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
Все документы хороши, если вы читаете их как роман, но среди них может быть трудно найти конкретные вещи.