当前位置: 首页 > 面试题库 >

Django:何时自定义保存与使用后保存信号

殷轶
2023-03-14
问题内容

我在数据库中进行了一系列测试和案例。每当测试过时时,它都会被注明过期日期,并且该测试的任何子案例也应注明过期日期。我看到两种方法可以做到这一点:

1)将保存功能修改为结束日期子案例。
2)创建一个接收器,侦听正在保存的测试模型,然后结束其子案例的日期。

有什么理由要使用另一个?

编辑:
我看到这篇博客文章建议每当您检查模型的给定值时都使用save方法。由于我正在检查end_date,也许这表明我应该使用自定义保存?

Edit2 :同样,记录下来,整个层次结构是Protocol-> Test-> Case->
Planned_Execution,并且只要一个end_date,每个子对象也都必须endDate。我想我最终将为每个人做基本上相同的事情。

Edit3 :事实证明,为了确定当前的save()是否是即将结束测试的日期,我需要访问旧数据和新数据,因此我使用了自定义保存。看起来是这样的:

def save(self):
    """Use a custom save to end date any subCases"""
    try:
        orig = Test.objects.get(id=self.id)
        enddated = (not orig.end_date) and self.end_date is not None   
    except:
        enddated = False

    super(Test, self).save()

    if enddated:
        for case in self.case_set.exclude(end_date__isnull=False):
            case.end_date = self.end_date
            case.enddater = self.enddater
            case.save()

问题答案:

我通常使用以下经验法则:

  • 如果您必须修改数据以使保存不会失败,请进行覆盖save()(您实际上没有其他选择)。例如,在我正在使用的应用程序中,我有一个模型,该模型的文本字段具有选项列表。这与旧代码相接,并替换了具有类似文本字段但具有 不同 选择列表的旧模型。旧代码有时会将我的模型传递给旧模型一个选择,但是选择之间存在1:1的映射,因此在这种情况下,我可以将选择修改为新模型。在中执行此操作很有意义save()
  • 否则,如果保存可以在没有干预的情况下继续进行,那么我通常会使用保存后的信号。


 类似资料:
  • 问题内容: 我无法解决这个问题。现在我有一些看起来像这样的模型: 一个Review是有几个“分数”,总体分数是分数的平均值。保存评论或分数后,我需要重新计算total_score平均值。现在,我正在使用重写的保存方法。使用Django的信号分配器会有好处吗? 问题答案: 在需要进行更改的情况下,保存/删除信号通常是有利的,这些更改并非完全针对所讨论的模型,或者可以应用于具有共同点的模型,或者可以配

  • 问题内容: 我目前正在尝试将自定义Swift类保存到NSUserDefaults。这是我的游乐场代码: 运行代码时,出现以下错误 执行被中断,原因:信号SIGABRT。 在最后一行(…) 在带有消息的应用程序中,相同的代码也会崩溃 “属性列表对于格式无效:200(属性列表不能包含’CFType’类型的对象)” 有人可以帮忙吗?我在Maverick上使用Xcode 6.0.1。谢谢。 问题答案: 正

  • 问题内容: 我想将-object 保存到Android存储中的某个位置以快速检索并在其中显示数据。 这可能吗?如果可以,那么SQLite或外部存储适合哪种技术? 问题答案: 例。 并从活动中致电 不要忘记在清单文件中使用write_external_storage权限。

  • 我已经在这里寻找答案,但没有一个适用于我的具体情况。我有一个数组列表 用户可以通过与应用程序交互向其中添加条目。我知道SharedReferences不适用于对象,我无法让gson工作。 我想保存的数组列表在on暂停,并寻找一个预先存在的保存列表在on创建。这是正确的做法吗? 编辑:我应该澄清,每个条目由两个字符串组成。这是obj构造函数: 所以每个条目基本上是这样的:

  • 问题内容: 我有一个新闻和一个消息。所述含有选择加入到阵列时teamObjects的的tableView。我想将此数组添加到其中,以便可以从其中包含需要teamObjects的url请求的访问它们。但是我不断得到: “试图为关键团队插入非财产列表对象(“”) 如果有比将其存储在更好的方法,我愿意接受其他建议 方法 我的对象 问题答案: 实际上,您将需要将自定义对象归档到其中,然后将其保存到用户默认

  • 问题内容: 我正在制作一个使用AVFoundation拍照的应用程序,我想将它们保存到自定义相册中,然后查询并显示在我的应用程序中。(除非用户希望,否则我不希望它们出现在一般的照片胶卷中)我真的找不到任何东西可以显示在Swift中如何做到这一点……或根本没有。我应该有其他方法吗? 我在SO上找到了这个示例,但是对我来说这没有意义,我无法使其正常工作。 任何帮助/说明都将非常棒! 问题答案: 这是我