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

السؤال

نشر

في دجانجو يوجد موديل جاهزه للuser لكن بها

first_name

last_name

username

password

فقط كيف يمكنني إضافة اشياء اخرى مثل صورة شخصيه او تاريخ انشاء الحساب مثلا

وايضا كيف يمكنني اضافة عدة انواع من الحسابات لكل نوع الpremsions الخاصه به مثل حساب طالب ومعلم وادمن مثلا

وشكرا.

Recommended Posts

  • 0
نشر

كما هو مذكور في التوثيق الخاص بدجانغو، يجب عليك القيام بذلك في بداية المشروع قبل أي عملية 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
نشر
بتاريخ 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 من عندي تلغى الحقول الاساسية كالاسم وكلمة المرور

  • 0
نشر
بتاريخ 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 الذي أنشأناه؟

  • 0
نشر
بتاريخ 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

بعد ذلك، يجب عليك إنشاء هجرة جديدة لتحديث قاعدة البيانات ثم قم بتشغيل أمر التهجير.

انضم إلى النقاش

يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.

زائر
أجب على هذا السؤال...

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   جرى استعادة المحتوى السابق..   امسح المحرر

×   You cannot paste images directly. Upload or insert images from URL.

  • إعلانات

  • تابعنا على



×
×
  • أضف...