如果您正在阅读本文,请先感谢...我是一名高中生,正在使用Django开发网络应用程序,以帮助学生找到实习机会,并帮助父母发布实习机会-如果您愿意的话,这是一个市场会。
我正在尝试为用户创建个人资料/帐户页面,但是我需要一种方法来区分登录的帐户是学生帐户还是雇主帐户,以便我可以使用views.py生成适合他们的页面帐户。
在models.py中,我有两种不同的配置文件类型,它们可以与用户帐户关联(由django.contrib.auth处理),请参见下文以供参考。
class Student(models.Model):
user = models.OneToOneField(User, on_delete=models.CASCADE)
profilePic = models.ImageField(default='default.jpg', upload_to='profile_pics')
class Meta:
verbose_name = 'Student Profile'
def __str__(self):
return f"{self.user.username}'s Profile"
class Employer(models.Model):
user = models.OneToOneField(User, on_delete=models.CASCADE)
profilePic = models.ImageField(default='default.jpg', upload_to='profile_pics')
company = models.CharField(max_length=100, default='Unspecified')
class Meta:
verbose_name = 'Employer/Parent Profile'
def __str__(self):
return f"{self.user.username}'s Profile"
在我的views.py页中,我试图为帐户/个人资料创建一个视图,该视图可以检测当前登录用户的个人资料是否链接到“学生”或“父母”模型并提供页面相应。我尝试了一种非常基本的方法,如下所示,但是毫不奇怪,它没有用。
def account(request):
if user.student.username == True:
context = 'Account: Student'
return render(request, 'users/studentprofile.html', context)
elif user.employer.username == True:
context = 'Account: Employer'
return render(request, 'users/employer.html', context)
我想知道是否有人对我如何才能最好地做到这一点提出建议。在此道歉,如果这种方法的结构不完善或与Django编程的现状背道而驰,我是一个完整的初学者!
首先感谢所有:)
答案 0 :(得分:2)
您实际上可以使用hasattr()来检查用户是否具有student
或employer
属性
if hasattr(user, 'student'):
... # your logic
elif hasattr(user, 'employer'):
... # your logic
以下内容完全是可选的,但我个人想做的就是在用户模型上创建一些简单的函数,例如本例中所示:
class User(models.Model):
...
def is_student(self):
return hasattr(self, 'student')
def is_employer(self):
return hasattr(self, 'employer')
然后,您可以在视图中使用它们:
if user.is_student():
... # your logic
elif user.is_employer():
... # your logic
顺便说一句,不要为初学者道歉!这是一个很好的问题。我建议您阅读One-to-one relationships上的文档。
希望有帮助!