3 django django-users python-2.7
我一直在寻求扩展Django用户模型,虽然我有信心我可以使它工作,但我确实想要了解一行代码.
我一直在参考以下教程:http: //blog.tivix.com/2012/01/06/extending-user-model-in-django/
但我不能为我的生活理解下面的代码行如何工作:
User.profile = property(lambda u: u.get_profile() )
Run Code Online (Sandbox Code Playgroud)
如果我理解正确,这会将User.profile的getter方法设置为匿名函数,该函数将用户作为参数并返回配置文件,但是,如果我引用myuser.profile,则实际传递的参数何时?
我希望我能正确地沟通自己.任何帮助理解这一点将不胜感激!
他们用这种方式写它可能更有意义
User.profile = property(lambda self: self.get_profile())
Run Code Online (Sandbox Code Playgroud)
或者更详细地说:
class UserProfile(models.Model):
user = models.OneToOneField(User)
@property
def profile(self):
return self.get_profile()
def __str__(self):
return "%s's profile" % self.user
Run Code Online (Sandbox Code Playgroud)
Python对象的每个实例方法的第一个参数是该方法所属的类的实例.self
只是一个惯例,所以u
也一样.