Пожалуйста, застрял на два дня на этом пользовательском классе подробное представление класса не отображается запись
Пожалуйста, кто-нибудь может помочь мне в этом вопросе. Пожалуйста, застрял на два дня на этом пользовательском классе подробное представление класса не отображает запись, я я думаю, что он возвращается к данным зарегистрированного пользователя, а не к деталям из списка. мой код ниже не ошибка даже распечатал переменную но все равно пусто
view.py
class ListOfEnrolledCandidate(View):
def get(self, request, **kwargs):
users = CustomUser.objects.filter(user_type=6).select_related('candidates')
context = {
'users': users
}
return render(request, 'superadmin/candidates/list-enrolled.html', context)
class CandidateProfile(View):
def get(self, request, **kwargs):
user = CustomUser.objects.get(id=int(kwargs['id']))
print(user)
return render(request, 'superadmin/candidates/profile-detail.html',{'users':user.id})
models.py
class Candidates(models.Model):
admin = models.OneToOneField(CustomUser, on_delete=models.CASCADE,
related_name="candidates")
profile_pic = models.ImageField(default='default.jpg', upload_to='upload')
middle_name = models.CharField(max_length=255)
gender = models.CharField(max_length=255)
country = models.ForeignKey(Country, on_delete=models.CASCADE, null=True)
state = models.ForeignKey(State, on_delete=models.CASCADE)
local = models.ForeignKey(Local, on_delete=models.CASCADE)
dob = models.CharField(max_length=100)
candclass = models.CharField(max_length=100, null=True)
parentno = models.CharField(max_length=11, null=True)
exam_year = models.CharField(max_length=100, null=True)
profile_pic = models.ImageField(default='default.jpg', upload_to='media/uploads')
created_at = models.DateTimeField(auto_now_add=True)
updated_at = models.DateTimeField(auto_now_add=True)
objects = models.Manager()
def __str__(self):
return self.middle_name
class CandidateSubject(models.Model):
admin = models.OneToOneField(CustomUser, null=True, on_delete=models.CASCADE)
subject1 = models.CharField(max_length=255, null=True)
subject2 = models.CharField(max_length=255, null=True)
subject3 = models.CharField(max_length=255, null=True)
subject4 = models.CharField(max_length=255, null=True)
subject5 = models.CharField(max_length=255, null=True)
subject6 = models.CharField(max_length=255, null=True)
subject7 = models.CharField(max_length=255, null=True)
subject8 = models.CharField(max_length=255, null=True)
subject9 = models.CharField(max_length=255, null=True)
subject10 = models.CharField(max_length=255, null=True)
created_at = models.DateTimeField(auto_now_add=True)
updated_at = models.DateTimeField(auto_now_add=True)
objects = models.Manager()
def __str__(self):
return f'{self.subject1, self.subject2}'
это отношения один к одному с пользователем
class CustomUser(AbstractUser):
user_type_data = ((1, "HOD"), (2, "Staffs"), (3, "Teachers"), (4, "Parents"), (5,
"Students"), (6, "Candidates"))
user_type = models.CharField(default=1, choices=user_type_data, max_length=15)
def __str__(self) -> str:
return self.first_name
i enjoy custom class more than functions please anyone help me out with this code
Для вашего класса CandidateProfile может быть лучше использовать DetailView:
from django.views.generic.detail import DetailView
from django.shortcuts import get_object_or_404
class CandidateProfile(DetailView):
context_object_name = 'candidate'
template_name = 'superadmin/candidates/profile-detail.html'
def get_object(self):
return get_object_or_404(CustomUser, pk=int(self.kwargs['id']))
Поскольку мы установили context_object_name в candidate, это означает, что django передаст объект CustomUser шаблону, и мы сможем получить доступ к этому объекту, используя candidate.
profile-page.html будет выглядеть примерно так:
<div class="tab-content tab-bordered" id="myTab3Content">
<div class="tab-pane fade show active" id="about"
role="tabpanel" aria-labelledby="home-tab2">
<div class="row">
<div class="col-md-3 col-6 b-r">
<strong>Full Name</strong>
<br>
<p class="text-muted">{{ candidate.first_name }}
</p>
</div>
<div class="col-md-3 col-6 b-r">
<strong>Mobile</strong>
<br>
<p class="text-muted">{{ candidate.admin.parentno }}</p>
</div>
<div class="col-md-3 col-6 b-r">
<strong>Email</strong>
<br>
<p class="text-muted">{{ candidate.email }}</p>
</div>