Django DetailView:将我切换到另一个用户

Django DetailView: switches me to a different user

我有两种用户类型,一个是学生,一个是导师。我有这个 ListView 的导师呈现他们的名字、个人资料标题和简历,效果很好,我还放了一个 link 到这三个字段,重定向到他们个人资料的详细视图。现在,我使用 cbv DetailView 来渲染他们个人资料的详细视图,这也很好..但唯一的问题是,每当我作为学生点击那些 link 时,它会切换我的个人资料或我的用户输入那个特定的导师,但是当我点击主页或网站的任何页面时,它会切换回正常状态。有人可以帮我吗?因为我从昨天开始就在寻找这个问题的解决方案,但我找不到与我的问题类似的问题。顺便说一句,对不起我的英语。

这是导师列表,正如您在右上角看到的,我是以学生身份登录的。

在这里,您可以在右上角看到它把我切换到乔斯的个人资料。

这是我的模型

class User(AbstractUser):
    is_student = models.BooleanField(default=False)
    is_tutor = models.BooleanField(default=False)
    first_name = models.CharField(max_length=100)
    last_name = models.CharField(max_length=100)
    email = models.EmailField(max_length=100)
    phone_number = models.CharField(max_length=11, blank=False)
    current_address = models.CharField(max_length=100)
    image = models.ImageField(default='default_pic.jpg', upload_to=path_and_rename, verbose_name='Profile Pictures')

    def __str__(self):
        return f'{self.username}'


class StudentProfile(models.Model):
    user = models.OneToOneField(User, on_delete=models.CASCADE, related_name='student_profile')
    def __str__(self):
        return f"{self.user.first_name} {self.user.last_name} Profile"


class TutorProfile(models.Model):
    user = models.OneToOneField(User, on_delete=models.CASCADE, related_name='tutor_profile')
    profile_headline = models.CharField(max_length=200, null=True)
    bio = models.TextField(max_length=500, blank=True, null=True)
    is_validated = models.BooleanField(default=False)
    DAYS = (('Monday', 'Monday'),
            ('Tuesday', 'Tuesday'),
            ('Wednesday', 'Wednesday'),
            ('Thursday', 'Thursday'),
            ('Friday', 'Friday'),
            ('Saturday', 'Saturday'),
            ('Sunday', 'Sunday'),)

    LANG = (('Javascript', 'Javascript'),
            ('Python', 'Python'),
            ('Swift', 'Swift'),
            ('Java', 'Java'),
            ('Sql', 'Sql'),
            ('PHP', 'PHP'),
            ('C#', 'C#'),)

    programming_languages = MultiSelectField(choices=LANG, null=True)
    availability = MultiSelectField(choices=DAYS, null=True)

    def __str__(self):
        return f"{self.user.first_name} {self.user.last_name} Profile"

这是我的看法

class TutorListView(LoginRequiredMixin,ListView):
    model = User
    template_name = 'accounts/tutor_list.html'
    context_object_name = 'tutors'
    ordering = ['userrating']
    paginate_by = 5


class TutorDetailView(LoginRequiredMixin,DetailView):
    model = User
    template_name = 'accounts/tutor_detail_view.html'


class ProfileView(LoginRequiredMixin, TemplateView):
    template_name = 'accounts/profile.html'

如果你们需要更多信息,请告诉我..

在你的 DetailView class!

中输入 context_object_name = 'tutor'