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

مشكلة عرض قيمة الاختيار في جانغو Django

Amer Abdallah

السؤال

لدي نموذج كالتالي:

class User(models.Model):
    name = models.CharField(max_length=200)
    bio  = models.CharField(max_length=20000, blank=True)
    
    GENDER_CHOICES = (
        ('M', 'Male'),
        ('F', 'Female'),
    )
    gender = models.CharField(max_length=20, choices=GENDER_CHOICES)

وأستخدم النموذج السابق في ملف العرض view التالي:

def profile(request):
    users = User.objects.filter(bio='')
    return object_list(request, template_name='polls/profiles.html', queryset=users, paginate_by=5)

لكن المشكلة هي عندما أحاول أن أقوم بطباعة الخاصية gender أحصل على M أو F بدلًا من Male أو Female، كيف أقوم بطباعة اسم الخاصية بالكامل؟

رابط هذا التعليق
شارك على الشبكات الإجتماعية

Recommended Posts

  • 1

يوفر لك Django إمكانية إستخدام أي خاصية من خلال كتابة التالي:

<النموذج>.get_<اسم الخاصية>_display

وبالتالي لطباعة القيمة الكاملة للخاصية gender في النموذج User ستكون كالتالي:

{{ user.gender}}	# M

{{ user.get_gender_display }}	# Male

وفي حالة إستخدام Jinja2 كمحرك القوالب، فيجب أن يتم إضافة قوسين في النهاية ، كالتالي:

{{ user.get_gender_display() }}

 

رابط هذا التعليق
شارك على الشبكات الإجتماعية

  • 0

لكل حقل يحتوي على مجموعة اختيارات ، سيكون للكائن دالة اسمها get_FOO_display () ، حيث FOO هو اسم الحقل. تقوم هذه الطريقة بإرجاع قيمة الحقل والتي يمكننا قراءتها, في ملف العرض

user = User.objects.filter(to_be_listed=True)
context['gender'] = User.get_gender_display()

في التمبليت

{{ user.get_gender_display }}

 

رابط هذا التعليق
شارك على الشبكات الإجتماعية

  • 0

مقتبس من التوثيق "لكل حقل يحتوي على مجموعة اختيارات، سيكون للكائن طريقة get_FOO_display () ، حيث FOO هو اسم الحقل. تقوم هذه الطريقة بإرجاع قيمة الحقل بحيث يمكننا قراءتها." .
لذا يمكنك إجراء التعديل التالي:

class User(models.Model):
    name = models.CharField(max_length=200)
    bio  = models.CharField(max_length=20000, blank=True)
    
    GENDER_CHOICES = (
        ('M', 'Male'),
        ('F', 'Female'),
    )
    gender = models.CharField(max_length=20, choices=GENDER_CHOICES)
    def __str__(self):
   		 return self.get_gender_display()

أو:

#views ضمن ال
user = user.objects.filter(to_be_listed=True)
context['gender'] = user.get_gender_display()
#template ضمن ال
{{ user.get_gender_display }}

 

تم التعديل في بواسطة Ali Haidar Ahmad
رابط هذا التعليق
شارك على الشبكات الإجتماعية

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

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

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

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

  • إعلانات

  • تابعنا على



×
×
  • أضف...