如何在Django中为CharField做一个很长的选择列表

时间:2014-08-06 20:14:09

标签: django django-models

我有一个包含课程名称的文本文件。我希望他们成为我模特中的选择。但我不确定如何填充COURSE_CHOICES。看起来选择将是硬编码的。但是选择需要是可编辑的。

目前我所拥有的是:

COURSE_CHOICES = ?????

class Course(models.Model):
    ... 
    subject = models.CharField(max_length = 255)

我是新人。所有帮助表示赞赏。感谢。

2 个答案:

答案 0 :(得分:1)

然后打开并阅读文件:

file = open('myfile.txt') 
COURSE_CHOICES = tuple((choice,choice) for choice in file.readline())

我不知道你的档案是如何构成的......所以我只能这样说。

答案 1 :(得分:0)

我不太确定你想要达到什么目标。但是将所有课程存储在模型中是明智之举:

# models.py
class Course(models.Model):
    title = models.CharField(max_length = 255)

# python manage.py shell
from myapp.models import Course

path = "path/to/file.txt"
data = open(path, 'r').read()
course_list = data.split()

for i in course_list:
    c = Course(title=i)
    c.save()

创建(普通)表单时,您可以使用ModelChoiceField

course = forms.ModelChoiceField(queryset=Crouse.objects.all(), 
                                empty_label="(Nothing)")

https://docs.djangoproject.com/en/dev/ref/forms/fields/#modelchoicefield

或创建modelForm

class CourseForm(ModelForm):
    class Meta:
        model = Course

https://docs.djangoproject.com/en/dev/topics/forms/modelforms/#modelform

注意:我没有测试代码。