Django更新而不是保存

时间:2014-11-20 01:52:20

标签: python django tastypie

我正在使用Django 1.7.1和Tastypie 0.12.1

我目前有一个模特:

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时,我希望实际更新我的计数字段,而不是保存一个全新的对象。

为此,我希望能够使用machine,client和authoritative_server搜索我的对象并增加计数字段。

问题是,我似乎不能在自己的save方法中搜索对象。 我以为我可以使用pre_save信号,但我不确定是否有效。

你们有谁知道如何做到这一点?

我事先感谢你的帮助。

2 个答案:

答案 0 :(得分:0)

我可能没有完全理解这一点,但是,根据我收集的内容,我们想要查询基于'machine','client'和'authoritative_server'的对象,然后能够更新该计数对象

Django REST Framework提供了对模型http://www.django-rest-framework.org/api-guide/filtering的不同字段进行过滤的功能。假设模型Geigeki的Django REST框架API端点是'/ api / v1 / geigeki /',我们可以先过滤以获取符合我们标准的对象列表,例如, /api/v1/geigeki/?machine=1&client=testclient&authoritative_server=127.0.0.1

然后,您可以从先前API调用返回的对象中获取ID,并对/ api / v1 / geigeki //执行“PATCH”请求。此“PATCH”请求应仅包含“count”字段。

答案 1 :(得分:0)

我想这是唯一的方法。

我想避免发出过多的HTTP请求,让服务器处理数据集,而不是让我的外部程序轮询数据库以了解该做什么。

感谢您的帮助和时间。