اذهب إلى المحتوى

Abdollahi Mohammed

الأعضاء
  • المساهمات

    35
  • تاريخ الانضمام

  • تاريخ آخر زيارة

كل منشورات العضو Abdollahi Mohammed

  1. احاول التعامل مع أنواع مختلفة من المستخدمين في مشروع جانقو ولكنني اواجه هذه المشكلة عندما احاول تسجيل مستخدم جديد من نوع مريض من خلال هذه الدالة 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) شكرا لكم
  2. البايثون هي واحدة من أكثر لغات البرمجة شيوعًا وودية ، وهذه بعض الخطوات التي ستمكنك من احترافها: حدد هدفك وافهم لماذا تريد احتراف بايثون: أولاً ، عليك أن تعرف سبب رغبتك في تعلم بايثون ومن تريد أن تصبح عندما تعرف لغة بايثون بالفعل. تعلم كيف تتعلم: كما قلت ، سوف تساعدك بعض هذه النصائح ليس فقط مع Python. يعد تعلم كيفية التعلم جزءًا شائعًا جدًا ، يجب عليك تحديد طريقة التعلم الأفضل بالنسبة لك ، على سبيل المثال ، مشاهدة مقاطع فيديو / دورة تدريبية على YouTube ، أو قراءة الكتب ، أو طرق أخرى. في الواقع ، ستتم استخدامها جميعًا بقدر ما ، ولكن بشكل أساسي ، يجب عليك دراسة الطريقة التي تناسبك بشكل أفضل واذا كنت تريد تجربة الدورات التدريبية فستجد هنا في منصة حاسوب دورة في لغة البايثون و بإنهائك لهذه الدورة ستصبح مطور بايثون محترف قادر على تطوير التطبيقات باستخدام لغة بايثون، وبناء مختلف تطبيقات الويب بإطار العمل جانغو وفلاسك ستجد الدورة في هذا الرابط. الأساسيات: إذا لم تتمكن من أساسيات بايثون ، ستواجه صعوبة كبيرة في احترافك لهذه الغة, هذه قائمة الأساسيات التي يجب أن تتعلمها أولاً: المتغيرات العمليات الشروط If, Else الحلقات الدوال أنواع البيانات الفئات والكائنات تأكد من أنك تفهم كل هذه النقاط. الممارسة والتدريب:إذا كنت قد قرأت الكثير من الكتب وشاهدت الكثير من الدورات التدريبية ولكنك ما زلت لا تفهم كيفية كتابة وظيفة من شأنها فرز قائمة المصفوفات الخاصة بك ، فأنت بحاجة إلى مزيد من التدريب. الغوص في المجتمع:عليك أن تفهم أنه لا يمكنك فعل أي شيء بمفردك ، على أي حال ، بالنسبة للمشاريع الكبيرة ، ستحتاج إلى مجموعة من الأشخاص الذين سيساعدونك ويلهمونك ، حتى شركات مثل Google و Apple لم يتم إنشاؤها بواسطة شخص واحد فقط . المكتبات و أطر العمل:يجب أن تتعلم المكتبات وأطر العمل في الاتجاه الذي تريد تطويره بشكل أكبر ، يمكن أن يكون التعلم الآلي والأتمتة أو تطوير الويب. شارك معرفتك:ابدأ في إنشاء دورات أو مقاطع فيديو YouTube أو كتابة مقالات متوسطة أو يمكنك بدء مدونة على أنواع مختلفة من الأنظمة الأساسية.و لا تنسى إنشاء مستودع على GitHub لتضع عليه مشاريعك
  3. انا برأي إنها مجرد مسألة كيفية استيعابك للمعلومات. من الافضل ان تبدأ بموارد الفيديو لانها أكثر تفاعلاً من مجرد قراءة كتاب. يمكنك اختيار أي من الحالتين ولكن الشيء الأكثر أهمية الذي يجب أن تضعه في اعتبارك هو أنك تحتاج إلى التدريب ، فمجرد قراءة كتاب أو مشاهدة مقاطع الفيديو لن يساعدك على التحسن. لغة بايثون هي واحدة من أكثر لغات البرمجة شيوعًا وتستخدم في العديد من المجالات ويكنك اختيار ايا من هذه المجالات: تطوير الويب الاتمته علوم البيانات استخراج وتنقيب البيانات الذكاء الاصطناعي والتعلم الآلي تطبيقات سطح المكتب وغيرها لمزيد من التفاصيل يمكنك الاضطلاع على هذا المقال
  4. لا يمكنك الحصول على عنوان MAC في JavaScript ، ويرجع ذلك أساسًا إلى أن عنوان MAC يعرّف الكمبيوتر قيد التشغيل بشكل فريد ، لذا سيكون ثغرة أمنية. إذا كنت بحاجة حقًا إلى معرفة عنوان MAC الخاص بالكمبيوتر وأنت تقوم بالتطوير للتطبيقات الداخلية ، فأقترح عليك استخدام مكون خارجي للقيام بذلك: ActiveX for IE و XPCOM for Firefox.
  5. ماذا يحدث بالضبط هل هناك اي رسالة خطأ؟
  6. ما هي المكتبة التي تستخدمها لتحويل الملف الي exe هل تستخدم pyinstaller ام مكتبة اخرى؟
  7. اذا كان البوت يعمل عندك في الجهاز اعتقد انه من المفروض ان يعمل عند الرفع على اي استضافه هنا بعض الاقتراحات تأكد منها: تأكد من وجود الروبوت في المجموعة وكمسؤول. حاول إضافة رمز وصول جديد (أبطل مفتاح API الحالي وأنشئ مفتاحًا جديدًا ثم استبدل إعدادات البرنامج المساعد). إذا قمت بتحرير الروبوت باستخدامBotFather ، فتأكد من استعادته إلى الإعدادات الافتراضية.
  8. اذا كنت تستخدم 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 وتطوير طريقة للتحقق من الإخراج المتوقع. إذا كانت هناك أي عمليات تهجير معلقة لمكالمات تهجير، فسيكون الإخراج مختلفًا عن المتوقع.
  9. في نسخ جانقو القديمة يتم استخدام الدالة defer لاستبعاد أعمدة من الاستعلام defer('col1', 'col2') كما يتم استخدام الدالة only للحصول على مجموعة محددة من الأعمدة فقط. only('col1', 'col2') الدالة values تفعل شيئًا مختلفًا قليلاً - بواسطتها ستحصل فقط على الأعمدة التي تحددها ، لكنها تُرجع قائمة من القواميس بدلاً من مجموعة من كائنات النموذج. لاستخدامها قم بإلحاقها باستعلامك كالاتي: queryset = User.objects.filter( first_name__startswith='R' ).values('first_name', 'last_name') هذا استعلام للحصول على الاسم الأول والاسم الأخير لجميع المستخدمين الذين يبدأ أسماؤهم بالحرف R.
  10. يمكنك ربط التصفيات للحصول على كل المنشورات التي تحتوي في عنوانها على كلمتين كما يلي: posts = Posts.objects.filter(title__contains='automation').filter(title__contains='python') اي اننا نقوم بالتصفية مرتين, المرة الاولى للحصول على المنشورات التي تحتوي على الكلمة automation بعد ذلك تصفية الناتج للحصول على المنشورات التي بها الكلمة python.
  11. السؤال ليس واضحا اخي الى اين تريد نقل قاعدة البيانات وانت تستخدم الدالة rename في الشفرة البرمجية وهذه تقوم باعادة تسمية الملف. برجاء التوضيح اكثر
  12. برجاء ارفاق شيفرة البرنامج ليتم معرفة مكان الخطأ حتى نستطيع معالجة المشكلة شكرا لك,
  13. يمكنك ايضا استخدام هذه الطريقه للحصول على كل المنشورات التي يزيد عمرها عن 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 ساعات!
  14. يمكنك استخدام التوثيق الرسمي لي heroku من هنا ومتابعة الخطوات لكي تستطيع رفع المشروع على heroku اذا وجهتك اي مشكلة يمكنك السؤال و نحن سنكون سعداء بمساعدك شكرا لك
  15. يمكنك إخبار 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 #ملف التهجير المراد تشغيله
  16. نعم بكل تاكيد ستستفيد من الدورة و سوف تتعلم في هذه الدورة الاتي: أساسيات الحاسوب وعلومه والتفكير المنطقي وما هي الخوارزميات وكيف تفيد في البرمجة تطبيقات عملية على أساسيات التفكير المنطقي باستخدام بيئة سكراتش Scratch التفاعلية أساسيات لغة البرمجة JavaScript وتطبيق المفاهيم التي تم شرحها باستخدامها، والتوسع في شرح التطبيقات العملية للغات البرمجة أساسيات أنظمة التشغيل المختلفة وكيفية تثبيت البرمجيات اللازمة للبرمجة عليها أساسيات سطر الأوامر في نظام لينكس، وشرح الأسس التي بني عليها النظام مع تطبيقها عمليًا أنظمة قواعد البيانات المختلفة، مع شرح تفصيلي للغة SQL للتعامل معها مبادئ أساسية في أنظمة قواعد البيانات NoSQL المفاهيم الأساسية التي تبنى فيها صفحات الويب مفاهيم أساسية في الشبكات والخوادم، وكيف يتم استقبال الطلبيات إلى الخادم والرد عليها مبادئ الحماية والأمان في الويب.
  17. نعم اخي الكريم يوجد العديد من الاضافات المجانية يمكنك البحث عنها وهذا مثال على احداهما قم بنسخ الكود التالي في أي مكان على موقع الويب الخاص بك الذي يقبل كود HTML <iframe src="https://timesprayer.com/widgets.php?frame=2&amp;lang=en&amp;name=salt&amp;avachang=true&amp;time=0" style="border: none; overflow: hidden; width: 100%; height: 275px;"></iframe> سوف تكون النتيجة كالتالي
  18. نعم هناك بعض الاضافات يمكن ان تستخدمها منها الاضافة MasjidNow كل ما عليك فعله هو نسخ رمز الأداة ولصقه . تجلب الأداة تلقائيًا أحدث مواقيت الصلاة من MasjidNow وتحافظ على تحديث التوقيتات ، لذلك لن تضطر أبدًا إلى تعديلها مرة أخرى. طريقة التثبيت: اتبع الخطوات أدناه للحصول على الإضافة لموقعك على الويب. الخطوة 1: التسجيل: قم بالتسجيل في MasjidNow.com وقم بتفعيل تجربتك المجانية مع المسجد الذي تختاره وهي مجانية لمدة 14 يوم الخطوة 2: الصق كود HTML: قم بنسخ الكود في أي مكان على موقع الويب الخاص بك الذي يقبل كود HTML كود التضمين (موصى به) <script type="text/javascript" id="masjidnow-daily-XXXXXX"> var s = document.createElement('script'); s.type = 'text/javascript'; s.async = true; s.src = 'https://www.masjidnow.com/embeds/daily_widget?masjid_id=XXXXXX&options[show_adhan]=true&options[show_monthly_info]=true'; var embedder = document.getElementById('masjidnow-daily-XXXXXX'); embedder.parentNode.insertBefore(s, embedder); </script> كود iFrame <iframe src="https://www.masjidnow.com/embeds/iframe_daily/?masjid_id=XXXXXX&options[show_adhan]=true&options[show_monthly_info]=true" height="100%" width="100%"></iframe>
  19. يمكنك رسم الاشكال والحروف الانجليزية بلغة البرمجة C++ ولعمل ذلك يمكننا استخدم حلقتين تكراريتان متداخلتين , الحلقة الخارجية مسؤولة عن عدد الصفوف في الشكل أو أنماط بينما يقوم الجزء الداخلي من الحلقة بطباعة العدد المطلوب من الاعمده في كل صف و هذا مثال: برنامج C ++ لطباعة نمط هرم نجمة كامل // C ++ برنامج لعرض هرم نجمى كامل #include <iostream> using namespace std; int main() { int rows, i, j, space; cout << "أدخل عدد الصفوف:"; cin >> rows; for(i = 1; i <= rows; i++) { // من أجل حلقة لعرض المساحة for(space = i; space < rows; space++) { cout << " "; } // for loop لعرض نجمة تساوي رقم الصف for(j = 1; j <= (2 * i - 1); j++) { cout << "*"; } cout << "\n"; } return 0; } و النتيجة سوف تكون كما في الصورة
  20. هنالك العديد من الطرق و APIs لاضافة مكالمات الفيديو لموقعك الالكتروني منها على سبيل المثال: WebRTC Twilio Quickblox Video SDK يمكنك اختيار ايا منها و اذا اخترت Video SDK انظر الى هذا المقال لمعرفة طريقة التشغيل
  21. الرجاء اضافة تفاصيل اكثر حتى نستطيع مساعدتك على سبيل المثال ما اللغات البرمجية التى تستخدمها و ماهى التقنيات المستخدمة لبناء الموقع. يمكنك الاطلاع على هذا الرابط https://academy.hsoub.com/pages/terms/ لمعرفة الطريقة الصحيحة لطرح الاسئلة
  22. مطلوب خاصية اسم المدخلات في أي نموذج html ليتم نشرها ، وإلا فإنها تترك دون معالجة يمكنك تعديل html كالأتي: <form action="{{ url_for('login') }}" method="post"> <div> <label for="username">Username: </label> <input type="text" id="username" name="username" placeholder="Username"> </div> <div> <label for="password">Password: </label> <input type="password" id="password" name="password" placeholder="Password"> </div> <div > <input class="btn btn-pramiry" name="submit" type="submit"> </div> </form>
  23. يمكنك الوصول إلى أي عنصر في القائمة عبر رقم الفهرس الخاص به. يعمل هذا في القالب بنفس طريقة عمل أي بحث آخر عن الخصائص: {{ users|0.fullName }}
  24. قم بتعريق الدالة filename في النموذج الخاص بك كالأتي import os class File(models.Model): file = models.FileField() ... def filename(self): return os.path.basename(self.file.name) وقم باستخدام الدالة كالأتي {% for uploaded in all_uploads %} <tr> <td>File Name: {{uploaded.filename}}</td><!-- يجب أن يتم كتابة اسم الملف هنا --> <td>File Path: {{uploaded.file.name}}</td> <td>File Size: {{uploaded.file.size}}</td> </tr> {% endfor %}
  25. OneToOne هذا يعني مثلا أن شخصًا واحدًا يمكن أن يحتوي على جواز سفر واحد فقط واحد وManyToMany هذا يعني أن شخصًا واحدًا يمكن أن يحتوي على العديد من العناوين مثل (العنوان الدائم ، عنوان المكتب ، العنوان الثانوي) وForeignKey تستخدم لتمثيل OneToMany في جانقو مثال على على هذا النوع من العلاقات انه قد يكون للشخص مكان ولادة واحد فقط ، ولكن مكان الميلاد قد يكون مرتبطًا بالعديد من الأشخاص.
×
×
  • أضف...