我多次使用lambda。阅读本教程时django-autoslug
有两个例子:
slug = AutoSlugField(populate_from='title')
更复杂:
slug = AutoSlugField(populate_from=lambda instance: instance.title,
unique_with=['author__name', 'pub_date__month'],
slugify=lambda value: value.replace(' ','-'))
我对该行感兴趣:populate_from='title'
和populate_from=lambda instance: instance.title
有什么区别?
您能否提供一些教程(而不是文档),其中包含lambda
?
答案 0 :(得分:0)
Python的lambda
只是一种快速创建函数的单行方式。它等同于:
def slugFunction(someInstance):
return someInstance.title
slug = AutoSlugField(populate_from=slugFunction)
你也可以制作一个与模型字段无关的slu ..例如,您可以使用一个纪元:
import time
slug = AutoSlugField(populate_from=lambda i: return str(time.time()))
(请注意,AutoSlugField将始终将模型实例传递给函数,因此您的函数必须使用一个参数,即使它不使用它。)
99%的时间,你可能会将slu base基于模型字段,因此有一个快捷方式。 AutoSlugField永远不会有足够的内置函数来处理其他用例,所以它允许你自己指定一个函数。
他们的文档令人困惑,因为他们以两种不同的方式说明了相同的用例。 - 正如L3viathan在上述评论中指出的那样,'title'
和lambda instance: instance.title
之间没有区别。