2014-11-20 2 views
0

Я использую Django 1.7.1 и 0.12.1 TastypieДжанго обновление вместо сохранения

Я в настоящее время модель:

class Geigeki(models.Model): 
    class Meta: 
     ordering = ['-updated'] 
    machine = models.ForeignKey(Machine, blank=False) 
    client = models.CharField(blank=False, max_length=30) 
    authoritative_server = models.GenericIPAddressField(blank=False) 
    count = models.BigIntegerField(blank=False, default=0) 
    created = models.DateTimeField(auto_now_add=True) 
    updated = models.DateTimeField(auto_now=True) 
    def __unicode__(self): 
     return "%s's geigeki measurements" % self.machine.name 

При использовании REST API, я хотел бы, чтобы фактически обновить мое вместо сохранения нового объекта.

Для этого я хотел бы иметь возможность искать свой объект с помощью машины, клиента и authoritative_server и увеличивать поле count.

Проблема в том, что я не могу найти объект в рамках собственного метода сохранения. Я думал, что могу использовать сигнал pre_save, но я не уверен, что это работает.

У вас есть идеи, как это сделать?

Я благодарю вас за помощь.

ответ

0

Возможно, я не полностью понимаю это, но из того, что я собрал, мы хотим запросить объект на основе «machine», «client» и «authoritative_server», а затем сможете обновить счетчик для этот объект.

Django REST Framework предоставляет возможность фильтровать по различным полям для модели, http://www.django-rest-framework.org/api-guide/filtering. Предполагая, что конечной точкой API Django REST Framework для модели Geigeki является «/ api/v1/geigeki /», мы могли бы сначала фильтровать, чтобы вернуть список объектов, соответствующих нашим критериям. Пример: /api/v1/geigeki /? Machine = 1 & клиент = testclient & authoritative_server = 127.0.0.1

Вы могли бы взять на себя идентификатор от объекта, возвращается из предыдущего вызова API, а также выполнять 'PATCH' запрос/апи/v1/geigeki //. Этот запрос «PATCH» должен содержать только поле «count».

0

Я думаю, что это единственный способ.

Я хотел избежать слишком большого количества HTTP-запросов и позволить серверу иметь дело с набором данных вместо того, чтобы моя внешняя программа опросила базу данных, чтобы знать, что делать.

Благодарим за помощь и ваше время.

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