gpt4 book ai didi

Django:为什么要创建一个OneToOne到UserProfile而不是将auth.User子类化?

转载 作者:行者123 更新时间:2023-12-04 04:19:14 25 4
gpt4 key购买 nike

注意:如果您想告诉我您不喜欢django.contrib.auth来“回答”这个问题,请继续。那将无济于事。我很清楚此事的范围和力量。

现在,问题是:

惯例是创建一个模型UserProfile,并向用户提供一个OneToOne。

用我能想到的所有方式,一种更有效的方法是将User子类化为打算供系统中每个人使用的类-称为Person(User)的类。

对于前者为什么是常规的而后者被认为是骇客的,我还没有一个连贯的解释。不久前,为了获得使用get_profile()的能力,我切换到了OneToOne方法,此后我一直感到后悔。我正在考虑切换回去,除非可以理解这种方法的优点。

最佳答案

您确实意识到,模型的子类化是通过幕后的OneToOne关系实现的吗?实际上,就效率而言,我完全看不出这两种方法之间的任何区别。

我认为,现有具体模型的子类化是一个讨厌的技巧,应尽可能避免。它涉及隐藏数据库关系,因此不清楚何时执行额外的数据库访问。显式显示关系,并在必要时显式访问它们会更加清晰。

现在,我喜欢的第三种选择是创建一个全新的用户模型,以及一个自定义身份验证后端,该后端返回新模型的实例,而不是默认模型的实例。创建后端仅涉及定义几个简单的方法,因此非常容易做到。

关于Django:为什么要创建一个OneToOne到UserProfile而不是将auth.User子类化?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5452288/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com