خطأ في إنشاء حقل الاختيار

1

أقوم بإنشاء حقل اختيار ولكن لا تظهر القائمة المنسدلة الخاصة بي على القالب:

مثالي:

Inactive = 0
Active = 1

state_choices = (
    (Inactive, 'Inactive'),
    (Active, 'Active')
)
class Tipe(models.Model):

    name = models.CharField(max_length=50)
    details = models.CharField(max_length=100)
    state = models.CharField(
        max_length=1,
        choices=state_choices,
        default=Active,
    )

class People(models.Model):

    name=models.CharField(max_length=100)
    phone=models.CharField(max_length=9, null=True)
    state = models.CharField(
        max_length=1,
        choices=state_choices,
        default=Active,
    )
    tipe = models.ForeignKey(Tipe, on_delete=models.CASCADE, null=True)

النماذج. py:

class PeopleForm(forms.Form):

    name = forms.CharField(max_length=100)
    name.widget.attrs.update({'class':'form-control', 'required': 'true' })


    phone = forms.CharField(max_length=9)
    phone.widget.attrs.update({'class':'form-control', 'minlength':'9'})

    optionState = (('1', 'Active'),('0', 'Inactive'),)
    state = forms.ChoiceField(choices=optionState )
    state.widget.attrs.update({'class':'form-control', 'required':'true'})

    tipe = forms.ModelChoiceField(queryset=Tipe.objects.filter(state=1), widget=forms.Select)

هذا العائد على القالب الخاص بي للنوع:

<select id="id_tipe" name="tipe">
<option value="" selected="selected">---------</option>
<option value="1">Tipe object</option>
<option value="3">Tipe object</option>
</select>

لا تظهر القيم في القائمة المنسدلة الخاصة بي فقط اعرض كائن Tipe لا أسماء أسماء نماذج الموديلات. إرضاء أي اقتراح .. شكرا !!

1 إجابة

0

حسنا أنت لم تحدد أبدا كيف Tipe يجب طباعة الكائن ، لذلك يعود Python / Django إلى تمثيل السلسلة الافتراضي لهذه النماذج. عادة ما يكون 'Tipe model (123)' مع 123 المفتاح الأساسي للكائن.

عن طريق تجاوز __str__ وظيفة ، يمكنك تحديد طريقة مخصصة لتقديم الكائنات الخاصة بك. على سبيل المثال يمكنك استخدام .name سمة مثل:

class Tipe(models.Model):

    name = models.CharField(max_length=50)
    details = models.CharField(max_length=100)
    state = models.CharField(
        max_length=1,
        choices=state_choices,
        default=Active,
    )

    def __str__(self):
        return self.name

يمكنك بالطبع تحديد شيء أكثر تعقيدًا إذا كنت تريد ، والنقطة هي أنك تحدد طريقة لتمثيل الكائنات في القوائم المنسدلة وحالات أخرى حيث تعرض كائنًا في قالب.

على الرغم من أن هذا لا علاقة له بالمشكلة ، أنصحك باستخدامها IntegerField الصورة الخاصة بك state الحقول منذ ذلك الحين 0 هو عدد صحيح ، وليس حرفًا (أو سلسلة) ، وبالتالي فهو أقرب إلى نوع القيم التي تستخدمها لتمثيل الحالة.

:مؤلف

أسئلة ذات صلة

فوق
قائمة طعام