python - كيف يمكنني برمجياً الحصول على max_length لحقل نموذج Django؟




django-models oop (3)

لنفترض أن لديّ فئة دجانغو كالتالي:

class Person(models.Model):
    name = models.CharField(max_length=50)
    # ...

كيف يمكنني الحصول على قيمة max_length لحقل name برمجي؟


Answers

السؤال يتعلق بالنماذج ، ولكن بالنسبة للأشخاص الذين يحاولون فعل الشيء ذاته بالنسبة للنماذج (هكذا انتهى الأمر في هذا الموضوع) ، أعتقد أن هذا الأسلوب بسيط وواضح:
1. في قالب:
{{form.name.field.max_length}}

2. في رمز python (على سبيل المثال في العرض)
form.name.field.max_length


Person._meta.get_field('name').max_length سيمنحك هذه القيمة. ولكن الحاجة إلى استخدام _meta تشير إلى أن هذا شيء لا يجب عليك فعله في الاستخدام العادي.

تعديل: كما أشار كارل ، هذه التسمية مضللة ويبدو أنها مقبولة تمامًا لاستخدامها: http://www.b-list.org/weblog/2007/nov/04/working-models/


إليك مثال يستخدم 3 أنواع مختلفة من المعلمات.

def func(required_arg, *args, **kwargs):
    # required_arg is a positional-only parameter.
    print required_arg

    # args is a tuple of positional arguments,
    # because the parameter name has * prepended.
    if args: # If args is not empty.
        print args

    # kwargs is a dictionary of keyword arguments,
    # because the parameter name has ** prepended.
    if kwargs: # If kwargs is not empty.
        print kwargs

>>> func()
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: func() takes at least 1 argument (0 given)

>>> func("required argument")
required argument

>>> func("required argument", 1, 2, '3')
required argument
(1, 2, '3')

>>> func("required argument", 1, 2, '3', keyword1=4, keyword2="foo")
required argument
(1, 2, '3')
{'keyword2': 'foo', 'keyword1': 4}




python django django-models oop