Добавление TastyPie ModelResource к другому ModelResource, связанному с помощью отношения Django OneToOne - PullRequest
2 голосов
/ 02 февраля 2012

У меня есть две модели django, которые связаны отношениями OneToOne, и мне не удается увидеть, как их соединить в Tastypie ModelResource.

Вместо публикации некоторых новых моделей я заимствую модели, определенные в Включая дочерние ресурсы в Django Tastypie API , чтобы показать, где я не понимаю, как это сделать. Используя модели Ticket и TicketComment, представьте, что TicketComment был такой:

class TicketComment(models.Model):
    ticket = models.OneToOneField('Ticket')

вместо использования поля ForeignKey. Я видел документы, а также сообщения, подобные приведенным выше, которые используют ToManyField и ToOneField. Но это не работает в моей ситуации, поскольку Ticket не ссылается на TicketComment. То, что я хочу сделать, это иметь возможность создать API, который перечисляет TicketComment в Ticket. Tastypie справедливо создает исключение, говоря, что поля TicketComment не существуют в модели Ticket. Есть ли способ получить хороший сериализованный TicketComment в Ticket API?

1 Ответ

1 голос
/ 02 февраля 2012

Имеется атрибут arg, который сообщает tastypie, какое поле следует использовать. Ticket ссылается на TicketComment по обратной связи. По умолчанию это будет имя модели в нижнем регистре, поэтому в вашем примере это будет ticketcomment. Но я рекомендую вам явно установить атрибут related_name в вашей модели, чтобы вы знали, как он будет подключен.

Итак, в вашем вкусном пироге вы должны сделать следующее:

class TicketResource(ModelResource):
   comment = fields.OneToOneField('TicketCommentResource', 'ticketcomment')

И это будет работать нормально. Второй аргумент в OneToOneField является атрибутом.

...