2012-02-01 3 views
2

У меня есть две модели django, которые связаны отношениями OneToOne, и у меня возникают проблемы с подключением их в Tastypie ModelResource.Добавление TastyPie ModelResource в другой ModelResource, связанный с отношением Django OneToOne

Вместо публикации некоторых новых моделей я возьму модели, определенные в Including child resources in a 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 в API Ticket?

ответ

1

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

Так что в вашем tastypie вы должны сделать это:

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

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

+0

это работает для меня: comment = fields.OneToOneField ('TicketCommentResource', 'ticketcomment') Это вы имели в виду? – Randy

+0

А, да, конечно, извините за опечатку. – Aldarund

+0

и сериализовать 'TicketComment' внутри' Ticket' использование 'OneToOneField ('TicketCommentResource', 'ticketcomment', full = True)' – zackdever

Смежные вопросы