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

السؤال

نشر

مرحبا..

لدي جدول مواعيد أريد جلب البيانات منه فقط حسب اسم المركز 

(ما اقصد به عندما اقوم بتسجيل الدخول الى صفحتي وعرض جدول المواعيد أن يظهر لي فقط المواعيد الخاصة بي  فلترة حسب "اسم لcenter")

models.py

class Appointment(Info_Patient):

      appointment_d=models.DateField(_("Date"), default=datetime.now,max_length=100)
      appointment_time= models.TimeField(_("Time:"), default=datetime.now,max_length=100)
/////////////////////////////////////
      center =models.ForeignKey('accounts.Center',verbose_name=_("Choose health center"),   on_delete=models.CASCADE, unique=False)
//////////////////////////////////////
      doctor =models.ForeignKey('accounts.ListDoctorCenter',verbose_name=_("Choose your doctor"),   on_delete=models.CASCADE, unique=False  )

 

 

views.py


def tablebooking(request):
    tablebooking = Appointment.objects.all()    # لا أريد جلب جميع جميع المواعيد  
                                                # filter(Center=request.center) لم تنجح
    if request.method == "POST":    
        statform = statusform()
        if statform.is_valid():
            # statform.instance.user = request.user
            statform.save()
            messages.success(request, ('Your websit was successfully added!'))
        else:
            HttpResponse(request, 'Error saving form')
        return render(request, 'user/tablebooking.html',{
              'statform':statform,   'tablebooking' : tablebooking
              })

 

Recommended Posts

  • 0
نشر

لتصفية نتائج البحث بحسب اسم المركز، يمكن استخدام filter وتمرير معامل البحث كمعامل center في ملف views.py.

def tablebooking(request):
    if request.method == "POST":
        statform = statusform()
        if statform.is_valid():
            statform.save()
            messages.success(request, ('Your websit was successfully added!'))
        else:
            HttpResponse(request, 'Error saving form')
        return render(request, 'user/tablebooking.html',{
            'statform':statform,
        })

    center_name = request.user.center.name  # افترض هنا أن اسم المركز مخزن في حساب المستخدم
    tablebooking = Appointment.objects.filter(center__name=center_name)

    return render(request, 'user/tablebooking.html', {
        'tablebooking' : tablebooking
    })

يتم استخدام request.user.center.name للوصول إلى اسم المركز المخزن في حساب المستخدم. إذا كنتي تستخدمي ميزة تسجيل الدخول المدمجة في Django، فسيتم تعيين request.user لكائن User المعني بالمستخدم الحالي.

وإذا كان لديك تطبيق خاص بتسجيل الدخول، فيجب عليك تغيير request.user.center.name إلى الطريقة التي تحصلي بها على اسم المركز الذي تريدي تصفيته.

  • 0
نشر
بتاريخ 8 دقائق مضت قال Mustafa Suleiman:

لتصفية نتائج البحث بحسب اسم المركز، يمكن استخدام filter وتمرير معامل البحث كمعامل center في ملف views.py.

def tablebooking(request):
    if request.method == "POST":
        statform = statusform()
        if statform.is_valid():
            statform.save()
            messages.success(request, ('Your websit was successfully added!'))
        else:
            HttpResponse(request, 'Error saving form')
        return render(request, 'user/tablebooking.html',{
            'statform':statform,
        })

    center_name = request.user.center.name  # افترض هنا أن اسم المركز مخزن في حساب المستخدم
    tablebooking = Appointment.objects.filter(center__name=center_name)

    return render(request, 'user/tablebooking.html', {
        'tablebooking' : tablebooking
    })

يتم استخدام request.user.center.name للوصول إلى اسم المركز المخزن في حساب المستخدم. إذا كنتي تستخدمي ميزة تسجيل الدخول المدمجة في Django، فسيتم تعيين request.user لكائن User المعني بالمستخدم الحالي.

وإذا كان لديك تطبيق خاص بتسجيل الدخول، فيجب عليك تغيير request.user.center.name إلى الطريقة التي تحصلي بها على اسم المركز الذي تريدي تصفيته.

شكرا لك 

طبقت الحل ظهر الخطأ 

AttributeError at /accounts/tablebooking/

'User' object has no attribute 'center'

 

هل لأنني قمت سابقا بالعمل على تجزأتة انواع المستخدمين 

class User(AbstractUser):
    is_superuser=models.BooleanField('is_superuser',default=False)
    is_Pharmacy=models.BooleanField('Is owner pharmacy',default=False)
    is_Info_Patient=models.BooleanField('Is patient',default=False)
    # is_ListDoctorCenter=models.BooleanField('Is doctor',default=False)
    is_Hospital=models.BooleanField('Is owner hospital',default=False)
    is_Clinic=models.BooleanField('Is owner clinic',default=False)
    is_Health_Center=models.BooleanField('Is owner center',default=False)

 

  • 0
نشر

نعم ، الخطأ يحدث لأن طريقة الوصول إلى اسم المركز غير صحيحة في عرض الجدول. لأن الخاصية "center" لا تنتمي مباشرة إلى نموذج المستخدم "User". بدلاً من ذلك ، يجب عليك استخدام خاصية "center" الموجودة في نموذج حساب المستخدم "accounts.Center".

يمكنك الوصول إليها باستخدام العلاقة الموجودة في نموذج المستخدم. يجب عليك تغيير السطر "center_name = request.user.center.name" إلى "center_name = request.user.account.center.name". وبالتالي ستتمكن من الحصول على اسم المركز الصحيح الذي ينتمي إليه المستخدم الحالي.

يمكنك تحسين رمز عرض الجدول عن طريق حذف الكود المتكرر واستخدام كائن الاستعلام الواحد الذي يتم استخدامه لعرض الجدول:

def tablebooking(request):
    if request.method == "POST":
        statform = statusform()
        if statform.is_valid():
            statform.save()
            messages.success(request, ('Your websit was successfully added!'))
        else:
            HttpResponse(request, 'Error saving form')
        return render(request, 'user/tablebooking.html',{
            'statform':statform,
        })

    center_name = request.user.account.center.name
    tablebooking = Appointment.objects.filter(center__name=center_name)

    return render(request, 'user/tablebooking.html', {
        'tablebooking' : tablebooking
    })

يستخدم الكود request.user.account.center.name للوصول إلى اسم المركز المرتبط بحساب المستخدم. إذا كان اسم المجال لهذا الحقل مختلفًا عن account، يجب استبداله في الكود.

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

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

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

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   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.

  • إعلانات

  • تابعنا على



×
×
  • أضف...