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

Haroun Taha

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

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

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

كل منشورات العضو Haroun Taha

  1. في حالة تستخدم الforms.ModelForm يتم تعريف الTextField وحقل الإدخال بإستخدام forms.CharField بدلاً من forms.TextField مثال توضيحي : full_name = forms.CharField(label=_(u'full name'), min_length=2, max_length=70) ارجو ان تكون وضحت المشكلة تحياتي.
  2. إذا كنت تقصد ال Forms الخاصة بال Models في ال Admin الخاصة بالجانغو يمكننا عمل ذلك بواسطة إنشاء model في models.py سنسميه في حالتنا class ExtraField ونعرف بداخله الحقل الذي تريد إضافته عند الضغط على add new field ونربطه بعلاقة Foreign Key مع ال model المرتبط بال Form سنسميه في حالتنا Post هكذا سيكون الكود داخل ال models.py : class ExtraField(models.Model): extra_data = models.CharField(max_length=200) post = models.ForeignKey(Post, on_delete=models.CASCADE) def __str__(self): return self.extra_data ملاحظة : لا تنسى عمل makemigrations and migrate من ثم في ملف الadmin.py عند تسجيل ال model المرتبط بالForm نقوم بتعريف class ExtraFieldTabularInline : from .models import ExtraField, Post class ExtraFieldTabularInline(admin.TabularInline): model = ExtraField من ثم نقوم بتعريف class ال PostAdmin بإضافة انه سيقبل Inlines اذن سنضيف ايضاً class PostAdmin : class PostAdmin(admin.ModelAdmin): inlines = [ExtraFieldTabularInline] class Meta: model = Post من ثم تسجيل form الpost في لوحة التحكم : admin.site.register(Post, PostAdmin) هكذا أصبح لديك اضافة حقول كما تريد ولقد تم انشاء الزر دون تحديث الصفحة وهذا إجابة لسؤالك اذا كنت تقصد الforms داخل لوحة التحكم الخاصة بالدجانغو استخدمت في المثال الجدول الmodel المرتبط بال form اسميته Post لتوضيح الفكرة ولكن لك ان تطبق الفكرة على اي جدول او model حسب ما اسميته. كانت إجابتي بخصوص الforms داخل لوحة التحكم في دجانقو لم اتطرق الى الforms الخاص بالعرض في التمبلت تحياتي . مثال بصري الى النتيجة :
  3. في ملف ال admin.py الخاص بال app قم بتعريف class مورث بخصائص ال admin ومن ثم سنقوم بعمل اعادة تعريف للدالة المسؤولة عن زر الحذف اسم الدالة has_delete_permission نكتب داخلها ان ترجع قيمة false من ثم إعطاء هذا ال class لدالة الadmin.site.register مثال توضيحي داخل ملف admin.py: from django.contrib import admin class DisableDeleteButtonAdmin(admin.ModelAdmin): def has_delete_permission(self, request, obj=None): # Disable delete return False admin.site.register(YourModel, DisableDeleteButtonAdmin) وهكذا اضمن لك انه تم الغاء تفعيل زر الحذف وتمت الاجابة على سؤالك مثال بصري للنتيجة .. قبل اضافة الكود : بعد كتابة الكود : ارجو ان تكون قد فهمت الطريقة تحياتي .
  4. اهلاً، في دالة ال view التي تقوم بتسجيل مستخدم جديد بعد التأكد من إضافة المستخدم بالبيانات المدخلة من ال form تذكر انه بعد عملية تسجيل المستخدم واضافة البيانات أضف هذا الكود: from django.contrib.auth import authenticate auth_user = authenticate(username=request. POST['username'], password=request. POST['password']) بعد عملية تسجيل مستخدم جديد فإن دالة authenticate داخل ال Django تعطي لها اسم المستخدم وكلمة المرور وهي تقوم بفحص اذا كان المستخدم موجود داخل النظام ام لا فترجع لنا object of user تم حفظه في حالتنا داخل المتغير auth_user. ومن ثم نفحص هل المستخدم موجود إذا كان موجود صرح له بتسجيل دخول للنظام باستخدام دالة login ومن ثم انقله لصفحة ال home او اي صفحة تريدها بوضع URL الصفحة مباشرة باستخدام دالة redirect دون جهد منه لقد أصبح مستخدم في النظام ومسجل دخوله لنرى ذلك في الكود لنضيف هذا الكود على الكود السابق: from django.contrib.auth import authenticate from django.contrib.auth import login from django.shortcuts import redirect auth_user = authenticate(username=request. POST['username'], password=request. POST['password']) If auth_user: login(request, auth_user) return redirect('/url/home/') الذي تم توضيحه اعلاه تمت عملية تسجيل الدخول من داخل دالة تسجيل مستخدم جديد دون ان يطر للذهاب لصفحة تسجيل الدخول ولقد تم تحويله مباشرة للصفحة الرئيسية بإستخدام دالة redirect وهذا اجابة لسؤالك اتمنى ان تكون قد وضحت لك الطريقة تحياتي .
×
×
  • أضف...