我想创建一个寻找导师的项目。 在计划中我认为,将注册用户的两个模型分开是很好的:对于学生(那些想要找导师)和导师。 内置的django用户模型不是那样的。我计划添加更多字段,也可以在学生和导师中使用相同的几个字段。
你能给我一个定制模特的现场例子吗?如果你在git或其他代码共享中有smth,那就太好了。 Shoudl我从学生那里继承了导师模型,因为它可以有相同的字段:电子邮件,姓名,姓氏等?
我应该为自定义模型编写哪些附加代码?我读了文档,发现我不知道 - 经理。我还应该定制经理吗?
如果我在自定义模型中取得成功,我将来可以遇到哪些问题进行身份验证,注册,更改此自定义模型的密码?
答案 0 :(得分:4)
此处不建议创建2个单独的模型。您将需要单独的登录过程并小心避免在单独的表中的用户之间共享pk的问题。我也很确定django不会允许这样做。
更好的选择是制作2个配置文件模型,如Extending the existing User model中所述。在其中一个配置文件中,您将为学生存储特定数据,并为导师存储其他特定数据。
答案 1 :(得分:2)
您的网站有两个目标用户,因此创建两个用户模型没有问题。只需确保从用户模型继承它们
from django.contrib.auth.models import User
class Student(User):
...
class Mentor(User):
...
答案 2 :(得分:1)
你不应该重新发明轮子,除非你真的想学习和练习Django的核心功能。只需添加一些附加库,例如userena,它“为您提供注册,登录,帐户编辑,隐私设置和私人消息”。通常,userena提供了一个额外的UserenaBaseProfile模型,该模型连接到内置的User模型。所以你可以为学生和导师继承这个模型:
from django.contrib.auth.models import User
from userena.models import UserenaBaseProfile
class CustomProfile(UserenaBaseProfile):
user = models.OneToOneField(User, unique=True)
common_field_for_all_children = models.IntegerField()
class Meta:
abstract = True
class Student(CustomProfile):
something_student_related = models.IntegerField()
class Mentor(CustomProfile):
something_mentor_related = models.CharField(max_length=255)