【问题标题】:Django update instead of savingDjango更新而不是保存
【发布时间】:2015-01-17 18:31:34
【问题描述】:

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

为此,我希望能够使用机器、客户端和权威服务器搜索我的对象并增加计数字段。

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

你们中有人知道如何做到这一点吗?

提前感谢您的帮助。

【问题讨论】:

    标签: python django tastypie


    【解决方案1】:

    我可能没有完全理解这一点,但根据我收集到的信息,我们希望根据“机器”、“客户端”和“权威服务器”查询一个对象,然后能够更新该对象的计数对象。

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

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

    【讨论】:

      【解决方案2】:

      我想这是唯一的方法。

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

      感谢您的帮助和时间。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2011-11-08
        • 1970-01-01
        • 1970-01-01
        • 2014-01-26
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多