I’m reading the tutorial here: https://docs.djangoproject.com/en/1.5/ref/models/fields/#choices and i’m trying to create a box where the user can select the month he was born in. What I tried was
MONTH_CHOICES = ( (JANUARY, "January"), (FEBRUARY, "February"), (MARCH, "March"), .... (DECEMBER, "December"), ) month = CharField(max_length=9, choices=MONTHS_CHOICES, default=JANUARY)
Is this correct? I see that in the tutorial I was reading, they for some reason created variables first, like so
FRESHMAN = 'FR' SOPHOMORE = 'SO' JUNIOR = 'JR' SENIOR = 'SR'
Why did they create those variables? Also, the MONTHS_CHOICES is in a model called People, so would the code I provided create a “Months Choices) column in the database called called “People” and would it say what month the user was born in after he clicks on of the months and submits the form?
According to the documentation:
An iterable (e.g., a list or tuple) consisting itself of iterables of exactly two items (e.g. [(A, B), (A, B) …]) to use as choices for this field. If this is given, the default form widget will be a select box with these choices instead of the standard text field.
The first element in each tuple is the actual value to be stored, and the second element is the human-readable name.
So, your code is correct, except that you should either define variables
FEBRUARY etc. or use
calendar module to define
import calendar ... class MyModel(models.Model): ... MONTH_CHOICES = [(str(i), calendar.month_name[i]) for i in range(1,13)] month = models.CharField(max_length=9, choices=MONTH_CHOICES, default='1')