该文档显示了一个示例,该示例说明如何使用选项here
声明模型CharField。class Student(models.Model):
FRESHMAN = 'FR'
SOPHOMORE = 'SO'
JUNIOR = 'JR'
SENIOR = 'SR'
GRADUATE = 'GR'
YEAR_IN_SCHOOL_CHOICES = [
(FRESHMAN, 'Freshman'),
(SOPHOMORE, 'Sophomore'),
(JUNIOR, 'Junior'),
(SENIOR, 'Senior'),
(GRADUATE, 'Graduate'),
]
year_in_school = models.CharField(
max_length=2,
choices=YEAR_IN_SCHOOL_CHOICES,
default=FRESHMAN,
)
列表YEAR_IN_SCHOOL_CHOICES
是class Student
的一部分。这是否意味着此列表存储在数据库中的某个位置?如果是这样,是否可以在运行时对其进行访问和修改?
假设我需要根据另一个模型类使此列表动态化。例如:
class Edu_Level(models.Model)
level = models.CharField(max_length = 200)
每次我的应用创建一个新的Edu_Level
时,我都希望将该级别添加到其他Student
模型中的选择列表中。假设它们都在同一个应用程序中,这可能吗?谢谢。
答案 0 :(得分:1)
在模型中设置您的选择是一个错误的选择,因为每次修改都会添加一个迁移。
您需要做的是创建一个ModelForm
并从模型Edu_level
中设置选择
EduLevel
在unique
上有一个level
元
class StudentForm(forms.ModelForm):
year_in_school = ModelChoiceField(queryset=EduLevel.objects.all())
class Meta:
model = ProfileDocument
fields = ('year_in_school',)