मैं django (v1.10.5) और पायथन में एक ऑनलाइन थिएटर बुकिंग ऐप बना रहा हूं।

Model.py:

TheaterLocation = [
    (1, 'Naharlagun'),
]

FloorLevel = [
    (1, 'Ground Floor'),
    (2, 'Balcony'),
]

Row = [

]

Column = [

]

class Seat(models.Model):
    theater_location = models.PositiveIntegerField(choices=TheaterLocation)
    floor_level = models.PositiveIntegerField(choices=FloorLevel)
    row_id = models.PositiveIntegerField()
    column_id = models.PositiveIntegerField()

    @property
    def seat_id(self):
        return "%s : %s : %s : %s" % (self.theater_location, self.floor_level, self.row_id, self.column_id)

मैं क्या करना चाहता हूं, Row और Column के लिए स्वचालित रूप से इस तरह विकल्पों की एक सूची बनाएं:

Row = [
    (1, 'A'),
    (2, 'B'),
    ...
    ...
    (8, 'H'),
]

Column = [
    1,2,3,4,5, ... , 22
]

मैं उपरोक्त की तरह कैसे प्राप्त कर सकता हूं?

0
Aamu 26 फरवरी 2017, 14:57

2 जवाब

सबसे बढ़िया उत्तर

वर्तमान में गतिशील विकल्प मॉडल परिभाषा में परिभाषित नहीं किए जा सकते इसलिए आपको संबंधित ChoiceField पर कॉल करने योग्य

आपके मामले में पंक्तियों को उत्पन्न करना इस तरह दिख सकता है:

def get_row_choices():
    import string
    chars = string.ascii_uppercase
    choices = zip(range(1, 27), chars)
    # creates an output like [(1, 'A'), (2, 'B'), ... (26, 'Z')]
    return choices

class SeatForm(forms.ModelForm):
    def __init__(self, *args, **kwargs):
        super(SeatForm, self).__init__(*args, **kwargs)
        self.fields['row_id'] = forms.ChoiceField(choices=get_row_choices())

अब आप इस फॉर्म को अपने SeatAdmin के लिए इस तरह इस्तेमाल कर सकते हैं:

class SeatAdmin(admin.ModelAdmin):
    form = SeatForm
1
arie 26 फरवरी 2017, 17:04

मैं यहां मान रहा हूं कि आप वास्तव में क्या करना चाहते हैं पंक्ति और कॉलम को मौजूदा इकाइयों पंक्ति और कॉलम से जोड़ना है। क्योंकि अन्यथा आप वैसे ही जाएंगे जैसे इसे ऊपर लागू किया गया है (आपके पास पहले से ही है)। लेकिन ध्यान रखें कि विकल्प टुपल्स होने के लिए होते हैं। उसके आस-पास के दस्तावेज़ देखें: https://docs.djangoproject.com/en/1.10/ref /मॉडल/फ़ील्ड/#विकल्प.

यदि आप उन्हें मौजूदा मॉडल वर्गों से जोड़ना चाहते हैं तो आप जो देख रहे हैं वह विदेशी कुंजी है।

0
chaos 26 फरवरी 2017, 15:03