我正在使用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信号,但我不确定是否有效。
你们有谁知道如何做到这一点?
我事先感谢你的帮助。
答案 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请求,让服务器处理数据集,而不是让我的外部程序轮询数据库以了解该做什么。
感谢您的帮助和时间。