Tastypie, добавить элемент в отношения «многие ко многим»

Я создаю django deliciouspie api, и у меня проблема с добавлением элементов в ManyToManyотношения

Пример, models.py

class Picture(models.db):
    """ A picture of people"""
    people = models.ManyToManyField(Person, related_name='pictures',
        help_text="The people in this picture",
    )

class Person(models.db):
    """ A model to represet a person """
    name = models.CharField(max_length=200,
        help_text="The name of this person",
    )

resources:

class PictureResource(ModelResource):
    """ API Resource for the Picture model """
    people = fields.ToManyField(PersonResource, 'people', null=True,
        related_name="pictures", help_text="The people in this picture",
    )
class PersonResource(ModelResource):
    """ API Resource for the Person model """
    pictures = fields.ToManyField(PictureResource, 'pictures', null=True,
        related_name="people", help_text="The pictures were this person appears",
    )

Моя проблема в том, что я хотел бы иметь конечную точку add_personв моем ресурсе изображения. Если я использую PUT, то мне нужно указать все данные на картинке Если я использую PATCH, мне все равно нужно указать всех людей на картинке. Конечно, я мог бы просто сгенерировать URL-адрес /api/picture/:id/add_peopleи решить свою проблему. Проблема в том, что он не чувствует себя чистым.

Другим решением было бы создать конечную точку /api/picture/:id/people, и там я мог бы сделать GET, POST, PUT, как будто это новый ресурс, но я не знаю, как реализовать это и кажется странным создавать новых людей под этим ресурсом.

Есть мысли?

8
задан Aamir Adnan 25 December 2012 в 20:53
поделиться