gar*_*ois 35 django orm django-models
对此设计决策背后的推理有何见解?在我看来,obj.save()返回一些东西,只有好处(如方法链接),没有缺点.
And*_*ter 56
在Python中,通常认为主要影响现有对象的函数不会返回自身.例如,sorted(yourlist)返回一个已排序的列表,但是yourlist.sort()就地排序列表并且不返回任何内容.
在单行上执行具有副作用的多个操作(与焦点在返回值上的无副作用函数相反)并不是一个好的做法.在行数方面,代码将更加紧凑,但由于重要的副作用可能隐藏在链的中间,因此难以阅读.如果要使用方法链接,请在链的开头使用没有副作用的函数,然后使用一个具有副作用的函数,如.save()最后一样.
换句话说,在方法链中,链的开头是输入,链的中间转换输入(向下导航树,对输入进行排序,更改字符串的大小写等)和结束链是与副作用一起工作的功能部分.如果你在链条中间埋葬带有副作用的方法,那么你的方法链实际上会做什么就不清楚了.
由于这是我在搜索“django 返回保存的对象”时得到的第一个结果,为了赞美安德鲁的答案,如果您仍然想返回保存的对象,而不是使用:
ExampleModel(title=title).save()
Run Code Online (Sandbox Code Playgroud)
它返回 None,您可以使用:
saved_instance = ExampleModel.objects.create(title=title)
Run Code Online (Sandbox Code Playgroud)
这是有效的,因为ExampleModel.objects它是模型管理器而不是类的实例,所以它不会返回自身。
| 归档时间: |
|
| 查看次数: |
10561 次 |
| 最近记录: |