【发布时间】:2016-07-24 03:02:22
【问题描述】:
我有一个网站,其中有两种用户(比如说):学生和导师。
这两种类型具有共同的登录功能、年龄、性别等,但具有不同的属性,例如学生成绩单和导师学位证书。
我阅读了这个问题:Django - Multiple User Profiles 并设置了我的个人资料,如下所示:
class UserProfile(models.Model):
user = models.OneToOneField(User, primary_key=True, related_name='profile')
mobile = models.CharField(max_length=10, blank=False, null=True)
picture = models.ImageField(
upload_to='images/', default='images/newuser.png')
age = models.IntegerField(null=True)
slug = models.SlugField()
...
还有其他两个链接到上述内容的模型。例如:
class StudentProfile(models.Model):
profile = models.ForeignKey(UserProfile, related_name="user_profile")
#more custom attributes
class TutorProfile(models.Model):
profile = models.ForeignKey(UserProfile, related_name="doctor_profile")
#more custom attributes
现在我的问题:
1) SlugField 在 UserProfile 属性上定义,但理想情况下将使用 User.username 字段。这意味着这两个表之间的连接每次都会发生。这是意料之中的吗?
2) 假设我使用基于类的视图,编辑/查看配置文件将取决于相关的 UserProfile。但我希望用户能够在同一页面上编辑/查看他的所有详细信息。因此,我也必须获取TutorProfile / StudentProfile 并添加自定义逻辑以确保它们也发生更新。
在我看来应该有适当的方法来处理这些情况(因为很多网站都有类似的要求)。在这种情况下应遵循哪些最佳做法?
【问题讨论】:
-
谁有这个的替代实现?
-
我现在正在研究一个类似的问题,如果我想出什么我会发布答案。
标签: django django-models django-views django-class-based-views