CustomUserModel не имеет пользовательских_докторов

У меня есть подробная страница клинической операции. И я хочу сделать ее доступной только для персонала и врачей, связанных с этой операцией с помощью ManyToManyField

За то, что я сделал это

class OperationPanelView(LoginRequiredMixin,View):
    login_url = reverse_lazy("doctor:login")

    def get(self,request,id):
        operation = OperationModel.objects.get(id=id)

        if request.user.user_doctors not in operation.doctor.all():
            if DoctorModel.objects.filter(user = request.user).exists():
                return redirect("doctor:panel",request.user.id)
        elif request.user.is_staff == True:
            return redirect("disease:panel",operation.id)

        context = {
            "operation":operation,
        }
        return render(request,"operation_detail.html",context)

это сработало, если request.user.user_doctors не связан с врачами этой операции, то он перенаправляет пользователя на его собственную панель. А также если request.user.user_doctors связан с врачами операции, то страница будет открыта.

Но не работает, если пользователь является сотрудником, и выдает такую ошибку:

RelatedObjectDoesNotExist at /disease/panel/1
CustomUserModel has no user_doctors.
in line 35: if request.user.user_doctors not in operation.doctor.all(): 

Затем я добавляю следующее условие:

        if request.user.user_doctors:

но это тоже дало ту же ошибку

DoctorModel:

class DoctorModel(models.Model):

    BLOOD_TYPE_CHOICES = [
        ("A+","A+"),
        ("A-","A-"),
        ("B+","B+"),
        ("B-","B-"),
        ("O+","O+"),
        ("O-","O-"),
        ("AB+","AB+"),
        ("AB-","AB-"),
    ]
 
    GENDER_CHOICES = [
        ("Male","Male"),
        ("Female","Female"),
    ]

    user = models.OneToOneField("account.CustomUserModel",on_delete=models.CASCADE,null=False,blank=False,related_name="user_doctors")
    first_name = models.CharField(verbose_name="Ad:",max_length=40,null=False,blank=False)
    last_name = models.CharField(verbose_name="Soyad:",max_length=60,null=False,blank=False)
    gender = models.CharField(choices=GENDER_CHOICES,max_length=6)
    working_field = models.ForeignKey(DoctorField,on_delete=models.SET_NULL,null=True,blank=False,related_name="field_doctors")
    phonenumber = PhoneNumberField(null=False,blank=True)
    about = models.TextField(verbose_name="Haqqinda:",null=True,blank=True)
    is_active = models.BooleanField(default=True)
    blood_type=models.CharField(choices=BLOOD_TYPE_CHOICES,max_length=10, null=True,blank=False)
    born_date = models.DateField(null=True,blank=False)

OperationModel:

class OperationModel(models.Model):
    name = models.CharField(null=True,blank=True,max_length=45)
    description = models.TextField(null=True,blank=True)
    disease = models.ManyToManyField(DiseaseModel,related_name="disease_operations")
    doctor = models.ManyToManyField("doctors.DoctorModel",blank=False,related_name="doctor_operations")
    starting_date = models.DateTimeField(auto_now_add=True)
    finished_date = models.DateTimeField(auto_now=True)
    patient = models.ForeignKey("patients.PatientModel",on_delete=models.DO_NOTHING,related_name="patient_operations")
    is_active = models.BooleanField(default=True)
Вернуться на верх