0

我有这样的课

class Ownership:
    like = models.BooleanField()
    queue = models.BooleanField()
    started = models.BooleanField()
    current = models.BooleanField()
    finished = models.BooleanField()

可以通过放置 dict 从 REST API 更新它{like:True, finished:True...}

同时,一些字段也有规则,例如:

如果like=True,那么finished=True。我遇到的问题是如何正确更新值,当客户发布时,比如说,{like:True, finished:False}在这里,如果我们使用 setter 设置完成 = True,那么完成的 setter 会将值重置为 False。

什么是有助于澄清和解决这种情况的好方法/设计模式?

4

2 回答 2

0

您可以覆盖默认保存方法以验证和更改值

class Ownership:
    like = models.BooleanField()
    queue = models.BooleanField()
    started = models.BooleanField()
    current = models.BooleanField()
    finished = models.BooleanField()

    def save(self, *args, **kwargs):
        if self.like:
            self.finished = True
        super(Ownership, self).save(*args, **kwargs) # Call the "real" save() method
于 2013-04-16T01:21:30.600 回答
0

在我看来,您将不得不编写一个在这种情况下返回 HTTP 400 或类似的验证器。也许409更合适?在任何一种情况下,您都可以包含一个错误字符串来解释哪个键/值组合导致了错误。

于 2013-04-16T01:16:05.907 回答