Hamza Waleed2 نشر 17 سبتمبر 2023 أرسل تقرير نشر 17 سبتمبر 2023 في دجانجو يوجد موديل جاهزه للuser لكن بها first_name last_name username password فقط كيف يمكنني إضافة اشياء اخرى مثل صورة شخصيه او تاريخ انشاء الحساب مثلا وايضا كيف يمكنني اضافة عدة انواع من الحسابات لكل نوع الpremsions الخاصه به مثل حساب طالب ومعلم وادمن مثلا وشكرا. 1 اقتباس
0 Kais Hasan نشر 17 سبتمبر 2023 أرسل تقرير نشر 17 سبتمبر 2023 كما هو مذكور في التوثيق الخاص بدجانغو، يجب عليك القيام بذلك في بداية المشروع قبل أي عملية migration و إلا سيصبح من الصعب جداً تعديل ذلك. بشكل عام يتم إنشاء تطبيق خاص بالمستخدمين (عادة نسميه accounts) و ضمن ال models.py نضع ما يلي: from django.db import models from django.contrib.auth.models import AbstractUser class User(AbstractUser): gender = models.BooleanField(default=True) # True for male and False for female # you can add more fields here. ضع الخصائص التي تريدها. ثم يجب عليك إخبار دجانغو بأن هذا الصنف هو ما تريد استعماله من أجل حساب المستخدم، و يمكن ذلك عبر إضافة ما يلي إلى ملف الإعدادات settings.py: AUTH_USER_MODEL = 'accounts.User' طبعاً في حال اخترت تسمية التطبيق الخاص بالحسابات غير accounts عليك تغيير ذلك فيما سبق. أما من أجل إعدادات الوصول و السماحية فأبسط طريقة هي أن تقوم بإضافة حقل إلى المستخدم يدل على صلاحيته و عند وجود عملية تحتاج صلاحية تتحقق من هذا الحقل. اقتباس
0 Hamza Waleed2 نشر 17 سبتمبر 2023 الكاتب أرسل تقرير نشر 17 سبتمبر 2023 بتاريخ 28 دقائق مضت قال Kais Hasan: كما هو مذكور في التوثيق الخاص بدجانغو، يجب عليك القيام بذلك في بداية المشروع قبل أي عملية migration و إلا سيصبح من الصعب جداً تعديل ذلك. بشكل عام يتم إنشاء تطبيق خاص بالمستخدمين (عادة نسميه accounts) و ضمن ال models.py نضع ما يلي: from django.db import models from django.contrib.auth.models import AbstractUser class User(AbstractUser): gender = models.BooleanField(default=True) # True for male and False for female # you can add more fields here. ضع الخصائص التي تريدها. ثم يجب عليك إخبار دجانغو بأن هذا الصنف هو ما تريد استعماله من أجل حساب المستخدم، و يمكن ذلك عبر إضافة ما يلي إلى ملف الإعدادات settings.py: AUTH_USER_MODEL = 'accounts.User' طبعاً في حال اخترت تسمية التطبيق الخاص بالحسابات غير accounts عليك تغيير ذلك فيما سبق. أما من أجل إعدادات الوصول و السماحية فأبسط طريقة هي أن تقوم بإضافة حقل إلى المستخدم يدل على صلاحيته و عند وجود عملية تحتاج صلاحية تتحقق من هذا الحقل. هل عند استخدام model من عندي تلغى الحقول الاساسية كالاسم وكلمة المرور 1 اقتباس
0 Kais Hasan نشر 18 سبتمبر 2023 أرسل تقرير نشر 18 سبتمبر 2023 بتاريخ 16 ساعة قال Hamza Waleed2: هل عند استخدام model من عندي تلغى الحقول الاساسية كالاسم وكلمة المرور لا، نحن نقوم بالوراثة من المودل الأصلي و بالتالي كل خصائصه تبقى كما هي. اقتباس
0 Hamza Waleed2 نشر 19 سبتمبر 2023 الكاتب أرسل تقرير نشر 19 سبتمبر 2023 بتاريخ On 17/9/2023 at 17:20 قال Kais Hasan: كما هو مذكور في التوثيق الخاص بدجانغو، يجب عليك القيام بذلك في بداية المشروع قبل أي عملية migration و إلا سيصبح من الصعب جداً تعديل ذلك. ولكني لم افعلها في بداية المشروع فما هي الطريقة لحل المشكله او لإضافة الحقول؟ او دلني على الصفحة التي بها شرح هذا الموضوع في توثيق دجانجو سؤال اخير في ملف الforms استخدمها بهذا الشكل from django import forms from django.contrib.auth.forms import AuthenticationForm attrs = {'class': 'form-control'} class UserLoginForm(AuthenticationForm): def __init__(self, *args, **kwargs): super(UserLoginForm, self).__init__(*args, **kwargs) username = forms.CharField( label='Username', widget=forms.TextInput(attrs=attrs) ) password = forms.CharField( label='Password', widget=forms.PasswordInput(attrs=attrs) ) ام استخدم الmodel الذي أنشأناه؟ 1 اقتباس
0 Mustafa Suleiman نشر 24 سبتمبر 2023 أرسل تقرير نشر 24 سبتمبر 2023 بتاريخ On 19/9/2023 at 16:14 قال Hamza Waleed2: ولكني لم افعلها في بداية المشروع فما هي الطريقة لحل المشكله او لإضافة الحقول؟ او دلني على الصفحة التي بها شرح هذا الموضوع في توثيق دجانجو سؤال اخير في ملف الforms استخدمها بهذا الشكل from django import forms from django.contrib.auth.forms import AuthenticationForm attrs = {'class': 'form-control'} class UserLoginForm(AuthenticationForm): def __init__(self, *args, **kwargs): super(UserLoginForm, self).__init__(*args, **kwargs) username = forms.CharField( label='Username', widget=forms.TextInput(attrs=attrs) ) password = forms.CharField( label='Password', widget=forms.PasswordInput(attrs=attrs) ) ام استخدم الmodel الذي أنشأناه؟ أفضل طريقة لإضافة حقول إلى نموذج المستخدم هي القيام بذلك في بداية المشروع قبل أي عملية migration، ولكن إن كنت قد بدأت بالفعل في إنشاء عمليات الهجرة، فهناك بعض الطرق التي يمكنك من خلالها إضافة حقول إلى نموذج المستخدم بعد ذلك. الطريقة الأولى: إنشاء نموذج المستخدم واستبدال نموذج المستخدم الافتراضي من Django عن طريق فتح ملف models.py الخاص بتطبيق Django لديك وقم بإنشاء نموذج المستخدم. ولإنشاء نموذج مستخدم جديد يسمى MyUser مع حقل جديد يسمى profile_picture لصورة الملف الشخصي، عليك إضافة السطر التالي إلى ملف models.py: class MyUser(AbstractUser): profile_picture = models.ImageField(upload_to='profile_pictures', blank=True) بعد ذلك، يجب عليك إنشاء هجرة جديدة لتحديث قاعدة البيانات. للقيام بذلك، استخدم الأمر التالي: python manage.py makemigrations ثم قم بتشغيل الهجرة باستخدام الأمر التالي: python manage.py migrate الطريقة الثانية: تعديل نموذج المستخدم الافتراضي من Django وإضافة الحقول الجديدة من خلال فتح ملف models.py وابحث عن نموذج المستخدم الافتراضي AbstractUser. ثم أضف الحقول الجديدة إلى نموذج المستخدم. ولإضافة حقل جديد يسمى profile_picture لصورة الملف الشخصي، تستطيع إضافة السطر التالي إلى نموذج المستخدم: profile_picture = models.ImageField(upload_to='profile_pictures', blank=True) بعد ذلك، يجب عليك إنشاء هجرة جديدة لتحديث قاعدة البيانات. للقيام بذلك، استخدم الأمر التالي: python manage.py makemigrations ثم قم بتشغيل الهجرة باستخدام الأمر التالي: python manage.py migrate الطريقة الثالثة: إنشاء نموذج حقل إضافي وربطه بنموذج المستخدم من خلال التوجه لملف models.py وابحث عن نموذج المستخدم الافتراضي AbstractUser. ثم أضف حقل profile_picture إلى نموذج المستخدم. ولإضافة حقل جديد يسمى profile_picture لصورة الملف الشخصي، نضيف السطر التالي إلى نموذج المستخدم: profile_picture = models.OneToOneField( 'profile.Profile', null=True, blank=True, ) ثم قم بإنشاء نموذج جديد يسمى Profile مع حقل image لصورة الملف الشخصي، ولإنشاء نموذج جديد يسمى Profile مع حقل image لصورة الملف الشخصي، عليك إضافة الكود التالي إلى ملف models.py: class Profile(models.Model): image = models.ImageField(upload_to='profile_pictures', blank=True) class Meta: abstract = True بعد ذلك، يجب عليك إنشاء هجرة جديدة لتحديث قاعدة البيانات ثم قم بتشغيل أمر التهجير. اقتباس
السؤال
Hamza Waleed2
في دجانجو يوجد موديل جاهزه للuser لكن بها
first_name
last_name
username
password
فقط كيف يمكنني إضافة اشياء اخرى مثل صورة شخصيه او تاريخ انشاء الحساب مثلا
وايضا كيف يمكنني اضافة عدة انواع من الحسابات لكل نوع الpremsions الخاصه به مثل حساب طالب ومعلم وادمن مثلا
وشكرا.
5 أجوبة على هذا السؤال
Recommended Posts
انضم إلى النقاش
يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.