Abdollahi Mohammed نشر 6 يونيو 2022 أرسل تقرير نشر 6 يونيو 2022 احاول التعامل مع أنواع مختلفة من المستخدمين في مشروع جانقو ولكنني اواجه هذه المشكلة عندما احاول تسجيل مستخدم جديد من نوع مريض من خلال هذه الدالة def signup(request): form = PatientSignUpForm() print('test') if request.method == "POST": form = PatientSignUpForm(request.POST) if form.is_valid(): print('tesitng adding user') patient = form.save() patientMore = PatientMore.objects.create( gender = form.cleaned_data.get('gender'), job = form.cleaned_data.get('job'), user = patient ) print('done') return redirect('home') return render(request, 'signup.html', {'form':form}) استخدمت البروكسي للتفريق بين انواع المستخدمين وقمت بعمل manager لكل نوع وهذه هي ال models class User(AbstractUser): class Types(models.TextChoices): Patient = 'Patient', 'Patient' Doctor = 'Doctor', 'Doctor' StaffMember = 'Staff', 'Staff' type = models.CharField(_("Type"), max_length=50, choices=Types.choices, default=Types.Patient) name = models.CharField(_('name of user'), blank=True, max_length=255) def get_absolute_url(self): return reverse('users:detail', kwargs={'username': self.username}) class PatientMore(models.Model): GENDER_MALE = 0 GENDER_FEMALE = 1 GENDER_CHOICES = [(GENDER_MALE, 'Male'), (GENDER_FEMALE, 'Female')] gender = models.IntegerField(choices=GENDER_CHOICES) job = models.CharField(max_length=100, null=True, blank=True) user = models.OneToOneField(User, on_delete=models.CASCADE) class PatientManager(models.Manager): def get_queryset(self, *args, **kwargs): return super().get_queryset(*args, **kwargs).filter(type=User.Types.Patient) class Patients(User): objects = PatientManager() @property def more(self): return self.patientmore class Meta: proxy = True def save(self, *args, **kwargs): if not self.pk: self.type = User.Types.Patient return super().save(*args, **kwargs) class DoctorMore(models.Model): user = models.OneToOneField(User, on_delete=models.CASCADE) specialist_doctor = models.CharField(max_length=100, null=True, blank=True) class DoctorManager(models.Manager): def get_queryset(self, *args, **kwargs): return super().get_queryset(*args, **kwargs).filter(type=User.Types.Doctor) class Doctors(User): objects = DoctorManager() @property def more(self): return self.doctormore class Meta: proxy = True def save(self, *args, **kwargs): if not self.pk: self.type = User.Types.Doctor return super().save(*args, **kwargs) شكرا لكم اقتباس
السؤال
Abdollahi Mohammed
احاول التعامل مع أنواع مختلفة من المستخدمين في مشروع جانقو ولكنني اواجه هذه المشكلة عندما احاول تسجيل مستخدم جديد من نوع مريض من خلال هذه الدالة
استخدمت البروكسي للتفريق بين انواع المستخدمين وقمت بعمل manager لكل نوع وهذه هي ال models
شكرا لكم
0 أجوبة على هذا السؤال
Recommended Posts
انضم إلى النقاش
يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.