CustomUserModel 没有 user_doctors
我有临床操作的详细页面。我想让它仅可供与此操作相关的工作人员和医生使用 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)
CustomUserModel:
class CustomUserModel(AbstractUser):
username = None
is_accepted = models.BooleanField(default=False)
email = models.EmailField(_("email address"),unique=True)
USERNAME_FIELD = "email"
REQUIRED_FIELDS = []
objects = CustomUserManager()
class Meta:
db_table = "user"
I have a detail page of clinical operation. And i want to make it accessible for only staff's and doctor's related with this operation with ManyToManyField
For do this i did
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)
this has worked for if request.user.user_doctors is not related with this operation's doctors then it will redirects the user to their own panel.
And also has worked for if request.user.user_doctors is related with operation's doctors then page will open.
But didn't worked for if user is staff and gave this error:
RelatedObjectDoesNotExist at /disease/panel/1
CustomUserModel has no user_doctors.
in line 35: if request.user.user_doctors not in operation.doctor.all():
Then i add this condition:
if request.user.user_doctors:
but this gave the same error too
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)
CustomUserModel:
class CustomUserModel(AbstractUser):
username = None
is_accepted = models.BooleanField(default=False)
email = models.EmailField(_("email address"),unique=True)
USERNAME_FIELD = "email"
REQUIRED_FIELDS = []
objects = CustomUserManager()
class Meta:
db_table = "user"
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论