Abdollahi Mohammed
الأعضاء-
المساهمات
35 -
تاريخ الانضمام
-
تاريخ آخر زيارة
آخر الزوار
لوحة آخر الزوار معطلة ولن تظهر للأعضاء
إنجازات Abdollahi Mohammed
-
احاول التعامل مع أنواع مختلفة من المستخدمين في مشروع جانقو ولكنني اواجه هذه المشكلة عندما احاول تسجيل مستخدم جديد من نوع مريض من خلال هذه الدالة 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) شكرا لكم
-
البايثون هي واحدة من أكثر لغات البرمجة شيوعًا وودية ، وهذه بعض الخطوات التي ستمكنك من احترافها: حدد هدفك وافهم لماذا تريد احتراف بايثون: أولاً ، عليك أن تعرف سبب رغبتك في تعلم بايثون ومن تريد أن تصبح عندما تعرف لغة بايثون بالفعل. تعلم كيف تتعلم: كما قلت ، سوف تساعدك بعض هذه النصائح ليس فقط مع Python. يعد تعلم كيفية التعلم جزءًا شائعًا جدًا ، يجب عليك تحديد طريقة التعلم الأفضل بالنسبة لك ، على سبيل المثال ، مشاهدة مقاطع فيديو / دورة تدريبية على YouTube ، أو قراءة الكتب ، أو طرق أخرى. في الواقع ، ستتم استخدامها جميعًا بقدر ما ، ولكن بشكل أساسي ، يجب عليك دراسة الطريقة التي تناسبك بشكل أفضل واذا كنت تريد تجربة الدورات التدريبية فستجد هنا في منصة حاسوب دورة في لغة البايثون و بإنهائك لهذه الدورة ستصبح مطور بايثون محترف قادر على تطوير التطبيقات باستخدام لغة بايثون، وبناء مختلف تطبيقات الويب بإطار العمل جانغو وفلاسك ستجد الدورة في هذا الرابط. الأساسيات: إذا لم تتمكن من أساسيات بايثون ، ستواجه صعوبة كبيرة في احترافك لهذه الغة, هذه قائمة الأساسيات التي يجب أن تتعلمها أولاً: المتغيرات العمليات الشروط If, Else الحلقات الدوال أنواع البيانات الفئات والكائنات تأكد من أنك تفهم كل هذه النقاط. الممارسة والتدريب:إذا كنت قد قرأت الكثير من الكتب وشاهدت الكثير من الدورات التدريبية ولكنك ما زلت لا تفهم كيفية كتابة وظيفة من شأنها فرز قائمة المصفوفات الخاصة بك ، فأنت بحاجة إلى مزيد من التدريب. الغوص في المجتمع:عليك أن تفهم أنه لا يمكنك فعل أي شيء بمفردك ، على أي حال ، بالنسبة للمشاريع الكبيرة ، ستحتاج إلى مجموعة من الأشخاص الذين سيساعدونك ويلهمونك ، حتى شركات مثل Google و Apple لم يتم إنشاؤها بواسطة شخص واحد فقط . المكتبات و أطر العمل:يجب أن تتعلم المكتبات وأطر العمل في الاتجاه الذي تريد تطويره بشكل أكبر ، يمكن أن يكون التعلم الآلي والأتمتة أو تطوير الويب. شارك معرفتك:ابدأ في إنشاء دورات أو مقاطع فيديو YouTube أو كتابة مقالات متوسطة أو يمكنك بدء مدونة على أنواع مختلفة من الأنظمة الأساسية.و لا تنسى إنشاء مستودع على GitHub لتضع عليه مشاريعك
- 3 اجابة
-
- 2
-
انا برأي إنها مجرد مسألة كيفية استيعابك للمعلومات. من الافضل ان تبدأ بموارد الفيديو لانها أكثر تفاعلاً من مجرد قراءة كتاب. يمكنك اختيار أي من الحالتين ولكن الشيء الأكثر أهمية الذي يجب أن تضعه في اعتبارك هو أنك تحتاج إلى التدريب ، فمجرد قراءة كتاب أو مشاهدة مقاطع الفيديو لن يساعدك على التحسن. لغة بايثون هي واحدة من أكثر لغات البرمجة شيوعًا وتستخدم في العديد من المجالات ويكنك اختيار ايا من هذه المجالات: تطوير الويب الاتمته علوم البيانات استخراج وتنقيب البيانات الذكاء الاصطناعي والتعلم الآلي تطبيقات سطح المكتب وغيرها لمزيد من التفاصيل يمكنك الاضطلاع على هذا المقال
- 4 اجابة
-
- 1
-
لا يمكنك الحصول على عنوان MAC في JavaScript ، ويرجع ذلك أساسًا إلى أن عنوان MAC يعرّف الكمبيوتر قيد التشغيل بشكل فريد ، لذا سيكون ثغرة أمنية. إذا كنت بحاجة حقًا إلى معرفة عنوان MAC الخاص بالكمبيوتر وأنت تقوم بالتطوير للتطبيقات الداخلية ، فأقترح عليك استخدام مكون خارجي للقيام بذلك: ActiveX for IE و XPCOM for Firefox.
- 3 اجابة
-
- 1
-
ماذا يحدث بالضبط هل هناك اي رسالة خطأ؟
-
ما هي المكتبة التي تستخدمها لتحويل الملف الي exe هل تستخدم pyinstaller ام مكتبة اخرى؟
- 3 اجابة
-
- 1
-
اذا كان البوت يعمل عندك في الجهاز اعتقد انه من المفروض ان يعمل عند الرفع على اي استضافه هنا بعض الاقتراحات تأكد منها: تأكد من وجود الروبوت في المجموعة وكمسؤول. حاول إضافة رمز وصول جديد (أبطل مفتاح API الحالي وأنشئ مفتاحًا جديدًا ثم استبدل إعدادات البرنامج المساعد). إذا قمت بتحرير الروبوت باستخدامBotFather ، فتأكد من استعادته إلى الإعدادات الافتراضية.
- 3 اجابة
-
- 1
-
اذا كنت تستخدم Django 3.2 فما فوق يمكنك استخدام python manage.py makemigrations --check --dry-run إذا لم تكن هناك تغييرات معلقة في النماذج تتطلب إنشاء تهجير سيكون الناتج المتوقع كالتالي: 'No changes detected' او يمكنك استخدام python manage.py migrate --plan سيكون الناتج المتوقع: 'Planned operations: No planned migration operations.' يمكنك استخدام ايا من الطرق في نص بيثون مع call_command وتطوير طريقة للتحقق من الإخراج المتوقع. إذا كانت هناك أي عمليات تهجير معلقة لمكالمات تهجير، فسيكون الإخراج مختلفًا عن المتوقع.
- 1 جواب
-
- 1
-
في نسخ جانقو القديمة يتم استخدام الدالة defer لاستبعاد أعمدة من الاستعلام defer('col1', 'col2') كما يتم استخدام الدالة only للحصول على مجموعة محددة من الأعمدة فقط. only('col1', 'col2') الدالة values تفعل شيئًا مختلفًا قليلاً - بواسطتها ستحصل فقط على الأعمدة التي تحددها ، لكنها تُرجع قائمة من القواميس بدلاً من مجموعة من كائنات النموذج. لاستخدامها قم بإلحاقها باستعلامك كالاتي: queryset = User.objects.filter( first_name__startswith='R' ).values('first_name', 'last_name') هذا استعلام للحصول على الاسم الأول والاسم الأخير لجميع المستخدمين الذين يبدأ أسماؤهم بالحرف R.
- 2 اجابة
-
- 1
-
يمكنك ربط التصفيات للحصول على كل المنشورات التي تحتوي في عنوانها على كلمتين كما يلي: posts = Posts.objects.filter(title__contains='automation').filter(title__contains='python') اي اننا نقوم بالتصفية مرتين, المرة الاولى للحصول على المنشورات التي تحتوي على الكلمة automation بعد ذلك تصفية الناتج للحصول على المنشورات التي بها الكلمة python.
- 3 اجابة
-
- 1
-
برجاء ارفاق شيفرة البرنامج ليتم معرفة مكان الخطأ حتى نستطيع معالجة المشكلة شكرا لك,
- 3 اجابة
-
- 1
-
يمكنك ايضا استخدام هذه الطريقه للحصول على كل المنشورات التي يزيد عمرها عن 24 ساعة قم اولا بالتوجه الي ملف ال views الخاص بالمشروع وقم باستدعاء التالي: from django.utils.timezone import now # للحصول على التاريخ الحالي from datetime import datetime , timedelta # ال timedelta تمكننا من عمل العمليات الحسابية على التاريخ بعد ذلك توجه الى ال view الذي تريد عمل الاسعلام فيه وقم بأنشاء الاستعلام كلأتي: now = datetime.datetime.now() earlier = now - datetime.timedelta(hours=5) earlier_posts.objects.filter(Created_at__range=(earlier,now)) earlier_posts يحتوي على كل المنشورات التي عمرها أكثر من 24 ساعات ، ولا تقل عن 24 ساعات!
- 3 اجابة
-
- 1
-
يمكنك استخدام التوثيق الرسمي لي heroku من هنا ومتابعة الخطوات لكي تستطيع رفع المشروع على heroku اذا وجهتك اي مشكلة يمكنك السؤال و نحن سنكون سعداء بمساعدك شكرا لك
-
يمكنك إخبار Django بالانتقال إلى هجرة معينة عن طريق ./manage.py migrate myapp 0005_migration_to_run لكن Django سيعمل على تشغيل كل عملية migration تصل إلى (أو تعود إلى) migration الذي اخترته. يمكنك محاولة التظاهر بالهجرة من قبل بالاتي ./manage.py migrate --fake myapp 0004_previous_migration #ملف التهجير السابق ./manage.py migrate myapp 0005_migration_to_run #ملف التهجير المراد تشغيله
- 2 اجابة
-
- 1