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

Abderrahmane Boulkenafet

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

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

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

أجوبة بواسطة Abderrahmane Boulkenafet

  1. كما يوضح الاسم ,فالمشكلة ليست بسبب الكود البرمجي , بل بسبب اتفاقيات , في هذه الحالة 
    تم رفض المعاملة بسبب ان الحساب المستخدم لتلقي المال (حساب العمل :business account) كان مسجل في الجزائر
    image.thumb.png.19a419220c14cdbd8ea4b3a0a0588bad.png

    بمجرد استخدام حساب امريكي  مكانه

    image.thumb.png.df61b07beef8a77feaca87a697db12f8.png

    تمت العملية بنجاح

    • أعجبني 1
  2.  باطار جانغو 
    كلما حاولت الدفع ببايبال , وبعد تسجيل معلومات المشتري 

    عند الضغط علة "استكمال الشراء " 

    image.thumb.png.ba4ed468e1c46e58c56479448ea3517d.png

    تظهر لي هذه المشكلة
    image.thumb.png.3a83a71c5fa2627880a0102c56d47ea8.png

    مع العلم اني اضفت

    PAYPAL_RECEIVER_EMAIL ='sb-b8f9d30750293@business.example.com'    
    PAYPAL_TEST =True

    في settings

    ايضا , هذه هي الدالة المسؤولة عن الform

    
        paypal_checkout = {
            'business':settings.PAYPAL_RECEIVER_EMAIL,
            'amount':200,
            'item_name':'just trying',
            'invoice': '113',
            'currency_code' :'USD',
            # 'notify_url': f"https://{host}{reverse('paypal-ipn')}",
            # 'return': f"https://{host}{reverse('payment-success')}",
            # 'cancel': f"https://{host}{reverse('payment-failed')}",
            'notify_url': f"{host}{reverse('paypal-ipn')}",
            'return': f"{host}{reverse('payment-success')}",
            'cancel': f"{host}{reverse('payment-failed')}",
    
        }
    
        paypal_form = PayPalPaymentsForm(initial=paypal_checkout)
    
    
        return render(request,'checkout.html',{'paypal':paypal_form})

     

     

  3. بتاريخ 4 ساعة قال ياسر مسكين:

    يمكنك استخدام التوريث لإنشاء فئات فرعية من الصنف User بهذا الشكل:

    from django.contrib.auth.models import AbstractUser
    from django.db import models
    
    class User(AbstractUser):
        # خيارات نوع المستخدم
        USER_TYPE_CHOICES = (
            ('vendor', 'Vendor'),
            ('customer', 'Customer'),
        )
        # حقل نوع المستخدم
        user_type = models.CharField(max_length=20, choices=USER_TYPE_CHOICES)
    
    # فئة فرعية لبائع
    class Vendor(User):
        # خاصية خاصة بالبائع
        vendor_specific_property = models.CharField(max_length=100)
    
    # فئة فرعية للعميل
    class Customer(User):
        # خاصية خاصة بالعميل
        customer_specific_property = models.CharField(max_length=100)

    حيث بداية تقوم بتعريف فئة User التي تمثل المستخدم الأساسي وتحتوي على خيارات نوع المستخدم وحقل لتحديد نوع المستخدم. ثم ننشئ فئات فرعية (Vendor وCustomer) ترث من الفئة الأساسية User ونضيف الخصائص الخاصة لكل فئة. هذا الحل يسمح لنا بإنشاء مستخدمين من نوعين مختلفين (بائع وعميل) وتخصيص الخصائص الخاصة بهم بسهولة.

     

    بتاريخ 4 ساعة قال Mustafa Suleiman:

    في البداية عليك تعريف صنف User الأساسي، حيث نستخدم AbstractUser من Django كقاعدة لصنف User، ويوفر AbstractUser جميع الخصائص والوظائف الأساسية للمستخدمين في Django، أي يمكننا إضافة أي خصائص إضافية نحتاجها إلى صنف User.

    class User(AbstractUser):
        phone_number = models.CharField(max_length=20)
        address = models.CharField(max_length=255)

    ثم تعريف صنف Vendor، ونرث من صنف User باستخدام class Vendor(User)، ونضيف خاصية type مميزة لصنف Vendor لتحديد نوع المستخدم، ونستطيع إضافة أي خصائص إضافية محددة لصنف Vendor نحتاجها.

    class Vendor(User):
        type = models.CharField(max_length=50, default="vendor")
        company_name = models.CharField(max_length=255)
        business_license_number = models.CharField(max_length=20)

    ثم تعريف صنف Customer، ونرث من صنف User باستخدام class Customer(User):، ونضيف خاصية type مميزة لصنف Customer لتحديد نوع المستخدم، أيضًا إضافة أي خصائص إضافية محددة لصنف Customer نحتاجها.

    class Customer(User):
        type = models.CharField(max_length=50, default="customer")
        shipping_address = models.CharField(max_length=255)
        billing_address = models.CharField(max_length=255)

    الآن نستخدم Vendor.objects.create_user لإنشاء بائع جديد ونمرر اسم المستخدم وكلمة المرور وخصائص أخرى إلى الطريقة create_user.

    from django.contrib.auth import authenticate
    
    username = "test_vendor"
    password = "password1234"
    
    vendor = Vendor.objects.create_user(username=username, password=password, type="vendor")
    
    # ... (إتمام عملية تسجيل البائع)

    أو نستخدم Customer.objects.create_user لإنشاء عميل جديد، ونمرر اسم المستخدم وكلمة المرور وخصائص أخرى إلى الطريقة create_user.

    from django.contrib.auth import authenticate
    
    username = "test_customer"
    password = "password5678"
    
    customer = Customer.objects.create_user(username=username, password=password, type="customer")
    
    # ... (إتمام عملية تسجيل العميل)

    وعليك استخدام الطريقة create_user الخاصة بكل صنف، واستيراد جميع النماذج (models) المُستخدمة في الكود.

    نجحت الطريقة معي الى حد ما 
    هذا هو الكود

    
    USER_TYPE_CHOICES = (
            ('vendor', 'Vendor'),
            ('customer', 'Customer'),
        )
    
    # Create your models here.
    class MyUser(AbstractUser):
        # خيارات نوع المستخدم
       
        pass
    
    
    # فئة فرعية لبائع
    class Vendor(MyUser):
        # خاصية خاصة بالبائع
        vendor_specific_property = models.CharField(max_length=100)
    
        store_deposit_account = models.CharField(max_length = 100 ,default='0000 0000 0000 0000')
    
        user_type = models.CharField(max_length=20, choices=USER_TYPE_CHOICES , default='vendor')
    
        class meta:
            verbose_name ='vendor'
    
    # فئة فرعية للعميل
    class Customer(MyUser):
        # خاصية خاصة بالعميل
        customer_specific_property = models.CharField(max_length=100)
        lives_in=models.CharField(max_length=50 ,default ='Algeria')
        user_type = models.CharField(max_length=20, choices=USER_TYPE_CHOICES , default='customer')
    
        class meta:
            verbose_name ='vendor'
    admin.site.register(MyUser)
    admin.site.register(Customer)
    admin.site.register(Vendor)

    لكنها تظهر هكذا في صفحة الadmin رغم انني حاولت تحديد الverbose_name
    image.png.f5caf333d46e5f7835ecbb983b738362.pngفكيف حل هذه المشكلة؟

    ايضا ,هل هناك طريقة للحد من عدد الحقول في صفحة الadmin و اظهار حقول معينة عند الانشاء؟
    ف..
    image.thumb.png.1d5bfd5f4ef9e85c8a1cce022f8a7f0c.pngهذا اكثر من المرغوب فيه

    ايضا @Mustafa Suleiman هل هناك طريقة لفعل هذا من الterminal ؟
     

    vendor = Vendor.objects.create_user(username=username, password=password, type="vendor")

     

    • أعجبني 1
  4. اريد صناعة عدة اصناف ترث من الصنف User حيث اضيف لكل صنف اشياء تخصه بحث استعملها لانشاء مستخدمين  

    مثلا الصنف vendor  فيه خاصية

    type = models.charField(max_length = 20 , default ='vendor')

    و عدة خواص اخرى  , في نفس الوقت 
    عند تسجيل بائع جديد , اريد استخدام هذا الصنف للتسجيل بدلا من User

    و ايضا صنف customer له عدة خواص مختلفة عن ما يرث منه

    مثلا

    type = models.charField(max_length = 20 , default ='customer')

    , يرث ايضا من user , و يستعمل لانشاء مستخدمين بدلا من User
     

    حاولت فعل هذا لكنني تلقيت اخطاء كثيرة

    class Vendor(AbstractUser):
        type = models.CharField( max_length=50,default = "vendor")
        def __init__(self, username="test1",password='pass_test',is_staff=False,*args: Any, **kwargs: Any) -> None:
            super().__init__(username,password,*args, **kwargs)


     

    • أعجبني 1
×
×
  • أضف...