Django动态模型选择可在Web应用程序中修改

时间:2013-08-15 02:05:26

标签: django django-models django-forms django-views

假设我有一个可供选择的模型,请参见下文(这是django doc示例)。 我需要的是我的Web应用程序能够动态添加和删除选项,我需要我的模型来更新这些选择。实际上,最好的方法是将选择存储在单独的数据库中,并使模型通过ForeignKey与它们建立关系。如何修改代码,以便我仍然可以在模型中选择?感谢。

from django.db import models

class Student(models.Model):

    YEAR_IN_SCHOOL_CHOICES = [
        ('FR', 'Freshman'),
        ('SO', 'Sophomore'),
        ('JR', 'Junior'),
        ('SR', 'Senior'),
    ]
    year_in_school = models.CharField(max_length=2,
                                  choices=YEAR_IN_SCHOOL_CHOICES,
                                  default=FRESHMAN)

1 个答案:

答案 0 :(得分:1)

Tuple is an Immutable object,您能够添加/删除选项。要实现您的目标,您需要持久存储。换句话说,它是从数据库中存储/检索的。

我建议将其设为ForeignKey字段,并将现有选项作为initial fixture加载到数据库中。

from django.db import models

class Student(models.Model):
    year_in_school = models.ForeignKey('YearChoices', default= get_default_year())

class YearChoices(models.Model):
    year_in_school = models.CharField(max_length=20)

我可以想到实现它的一种方式是,在表单中,CharField with autocomplete choices来自YearChoices表,而POST,如果选择不< / em> exists,在YearChoices表中创建一个新条目。