我有一个小的Django项目,从外部源获取一些信息并使用它来构建模型实例。问题是,该源返回了许多(而且我是指很多!)我不需要的额外信息。
目前,我必须找出其中的额外记录,并手动逐个删除。但这不太好,因为
- It makes for very ugly code and
If the external source changes, e.g. it adds a new field, my code will throw an error when I construct a model
myModel = MyModel(**argDict)
argDict
传递给我的模型,并使其抑制有关额外信息的任何错误,并且只是丢弃它?我想我可以使用pre_init
信号,但我仍然不知道如何停止返回该错误。
__init__
方法。一些替代方案包括定义一个函数,例如create_model_from_external_data(**argDict)
或者一个管理方法,例如MyModel.objects.create_from_external_data(**argDict)
。 - Alasdair__init__
。在这种情况下,我认为最好调用一个方法,明确表明您正在丢弃数据,而不是在应用程序的各个地方更改行为,这可能会隐藏微妙的错误。 - Alasdair__init__
会改变该行为。编辑了我的答案,感谢澄清! - user2390182myModel
的类方法,则会降低其可重用性(因为你需要将model
参数替换为cls
)。 - user2390182