Невозможно разрешить ключевое слово "имя пользователя" в поле. Возможные варианты: биография, блог, описание, идентификатор, изображение, специальность, статус, пользователь, user_id. - PullRequest
1 голос
/ 16 июня 2020

эй, я хочу создать страницу профиля для своего пользователя, на которой, когда люди заходят на веб-сайт, они могут просматривать профиль каждого пользователя, я получаю указанную выше ошибку каждый раз, когда пытаюсь войти в каждый профиль пользователя i получите, это мой код ниже

views.py

class DoctorDetailView(LoginRequiredMixin, DetailView):
    model = Doctor
    fields = ['user', 'email', 'image', 'speciality', 'bio']
    template_name = 'pages/doctor_detail.html'

    def get_queryset(self):
        user = get_object_or_404(Doctor, username=self.kwargs.get('username'))
        return Doctor.objects.filter(doctor=user.doctor)

urls.py

    path('doctor/', doctor, name='doctor'),
    path('doctor/info/<str:username>', user_views.DoctorDetailView.as_view(), name='doctor-detail'),

доктор. html

<a href="{% url 'doctor-detail' doc.user.username %}"><div class="img-wrap d-flex align-items-stretch">
                                <div class="img align-self-stretch" style="background-image: url({{ doc.user.doctor.image.url }}"></div>

models.py

class CustomUser(AbstractUser):
    is_doctor = models.BooleanField(default=False)

    def __str__(self):
        return self.email


class Status(models.Model):
    title= models.CharField(max_length=5)


    def __str__(self):
        return self.title


class Doctor(models.Model):
    user = models.OneToOneField(CustomUser, on_delete=models.CASCADE, null=True, related_name="doctor")
    image = models.ImageField(default='jazeera.jpg', upload_to='profile_pics')
    bio = models.TextField()
    speciality = models.CharField(max_length=300)
    describtion = models.CharField(max_length=100)
    status = models.ManyToManyField(Status)

1 Ответ

1 голос
/ 16 июня 2020

A Doctor объект не имеет имени пользователя, следовательно:

user = get_object_or_404(<s>Doctor</s>, username=self.kwargs.get('username'))

не имеет особого смысла, однако вам не нужно использовать get_object_or_404 для первой выборки пользователя, вы можете фильтровать с помощью:

from django.shortcuts import get_object_or_404

class DoctorDetailView(LoginRequiredMixin, DetailView):
    model = Doctor
    fields = ['user', 'email', 'image', 'speciality', 'bio']
    template_name = 'pages/doctor_detail.html'

    def get_object(self):
        return get_object_or_404(Doctor, <b>user__username=self.kwargs['username']</b>)
...