我想为教师创建一个模型,他将有一个用户登录系统。我通过教师模型和用户模型之间的一对一关系来实现这一点,但我无法理解为教师模型制作表单,同时我想为他/她创建用户,请注意我使用CreateView通用视图。
class Teacher(models.Model):
GENDER_CHOICES = (
(MALE, _('Male')),
(FEMALE, _('Female')),
)
gender = models.CharField(max_length=1, verbose_name=_('Gender'),
choices=GENDER_CHOICES)
civil_id = models.CharField(max_length=12, verbose_name=_('Civil ID'))
phone_number = models.CharField(max_length=15,
verbose_name=_('Phone Number'))
job_title = models.CharField(max_length=15, verbose_name=_('Title'))
user = models.OneToOneField(to=User, related_name='teacher_profile')
def enable(self):
"""
Enable teacher profile
:return:
"""
self.user.is_active = True
self.user.save()
def disable(self):
"""
Disable teacher profile
:return:
"""
self.user.is_active = False
self.user.save()
答案 0 :(得分:1)
每当用户填写注册表单时,您都可以使用信号创建Teacher
。提示将是以下情况,我在用户完成注册表单后自动创建UserProfile
class UserProfile(models.Model):
user = models.OneToOneField(User, related_name="profile")
class Meta:
verbose_name_plural = "User Profiles"
def __unicode__(self):
return self.user.username
def create_user_profile(sender, instance, created, **kwargs):
if created:
UserProfile.objects.create(user=instance)
post_save.connect(create_user_profile, sender=User)
每当新用户注册时使用信号post_save
,将运行函数create_user_profile
,并为该用户创建新的配置文件。
另一种方法是为Teacher
模型创建表单,并在同一视图上验证两种表单,注册表单和教学表单。
我不想用你的案例老师写出整个代码,但我想给你一个如何做的提示。希望它有所帮助。