本文介绍了如何在Django中将自定义用户注册为学生的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧! 问题描述 29岁程序员,3月因学历无情被辞! 我有django课程模型和自定义用户作为学生我为登录的学生添加了一些课程,现在我需要在student_profile.html中显示用户或学生及其课程的资料 这是我的课程模型 class Course(models.Model):学生=模型.ManyToManyField('Profile',blank = True)Course_Name =模型.CharField(max_length = 200)Duration_Time =模型.CharField(max_length = 50)Course_Fee = models.IntegerField()Discount_Fee = models.IntegerField()Course_Image = models.FileField()Course_Description = models.TextField(max_length = 500)def __str __(self):返回self.Course_Name +'-'+ self.Duration_Time 这是模型轮廓 类Profile(models.Model):学生= 1教师= 2 ROLE_CHOICES =((学生,'学生'),((教师,'老师'),)用户= models.OneToOneField (User,on_delete = models.CASCADE)phone_number = models.CharField(max_length = 30,blank = False,help_text ='Required。')email_confirmed = models.BooleanField(default = False)角色= models.PositiveSmallIntegerField(choices = ROLE_CHOICES, null = True,blank = True)#此方法为管理面板类Meta调用:verbose_name ='profile'verbose_name_plural ='profiles'def __str __(self):返回self.user.username@receiver(post_save,sender = User)def update_user_profile(发送者,实例,创建的,**假的):如果创建:Profile.objects.create(user = instance)instance.profile.save() h这是我的学生个人资料模板 {%如果user.is_authenticated%}< ; p>欢迎{{user.first_name}}-{%for user.profile.course_set.all%}中的课程{{course.name}} {%if not forloop.last%},{%endif%} { %空%}< span>无课程< / span> {%endfor%}< / p> {%endif%}< p>< a href = / logout>注销< / a>< / p> 当学生登录个人资料模板时仅显示学生姓名 这是浏览器中的结果 欢迎学习该课程的学生-,注销 解决方案您可以在课程模型中添加 ManyToManyField ,命名为: class Course(models.Model):#其他字段学生=模型。 ManyToManyField('Profile',blank = True)` 因此,当您有一个配置文件实例时,此查询 profile_instance.course_set.all()将显示该个人资料/学生参加过的所有课程 在您的vi中ew,请勿覆盖 get_queryset() {%,如果用户.is_authenticated%} < p> p欢迎{{user.first_name}}- {user.profile.course_set.all中课程的百分比%} {{course.Course_Name} } {%,如果不是forloop.last%},{%endif%} {%空%} < span>无路线< / span> {%endfor%} < / p> {%endif%} < p>< a href = / logout> Logout< / a< / p> ... I have django course model and custom user as studentsI added some course for logged student, Now i need to show the profile of user or student and his course in student_profile.htmlhere is my model for courseclass Course(models.Model): students = models.ManyToManyField('Profile', blank=True) Course_Name = models.CharField(max_length=200) Duration_Time = models.CharField(max_length=50) Course_Fee = models.IntegerField() Discount_Fee = models.IntegerField() Course_Image = models.FileField() Course_Description = models.TextField(max_length=500) def __str__(self): return self.Course_Name + ' - ' + self.Duration_Timehere is model profileclass Profile(models.Model): STUDENT = 1 TEACHER = 2 ROLE_CHOICES = ( (STUDENT, 'Student'), (TEACHER, 'Teacher'), ) user = models.OneToOneField(User, on_delete=models.CASCADE) phone_number = models.CharField(max_length=30, blank=False, help_text='Required.') email_confirmed = models.BooleanField(default=False) role = models.PositiveSmallIntegerField(choices=ROLE_CHOICES, null=True, blank=True) # this method called for admin panel class Meta: verbose_name = 'profile' verbose_name_plural = 'profiles' def __str__(self): return self.user.username@receiver(post_save, sender=User)def update_user_profile(sender, instance, created, **kwargs): if created: Profile.objects.create(user=instance) instance.profile.save()here is my students profile template {% if user.is_authenticated %} <p>welcome {{ user.first_name }} -- {% for course in user.profile.course_set.all %} {{ course.name }}{% if not forloop.last %},{% endif %} {% empty %} <span>No course</span> {% endfor %} </p> {% endif %} <p><a href="/logout">Logout</a></p>When student login in profile template showing only studentnameHere is result in browserwelcome studnet for course -- ,Logout 解决方案 You can add a ManyToManyField in your Course Model, named:class Course(models.Model): # other fields students = models.ManyToManyField('Profile',blank=True)`So when you have a profile instance, this query profile_instance.course_set.all() will display all the courses that this profile/student has attendedIn your view, don't override get_queryset(){% if user.is_authenticated %} <p>welcome {{ user.first_name }} -- {% for course in user.profile.course_set.all %} {{ course.Course_Name }}{% if not forloop.last %},{% endif %} {% empty %} <span>No course</span> {% endfor %} </p>{% endif %}<p><a href="/logout">Logout</a></p>... 这篇关于如何在Django中将自定义用户注册为学生的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持! 上岸,阿里云!
08-14 14:36