Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何为Django中的CharField创建一个长长的选择列表_Django_Django Models - Fatal编程技术网

如何为Django中的CharField创建一个长长的选择列表

如何为Django中的CharField创建一个长长的选择列表,django,django-models,Django,Django Models,我有一个包含课程名称的文本文件。我希望它们成为我模型中的选择。但我不知道如何填充课程选择。看起来选择将被硬编码。但是这些选项需要是可编辑的 我目前所拥有的一切如下: COURSE_CHOICES = ????? class Course(models.Model): ... subject = models.CharField(max_length = 255) 我是新来的。感谢所有的帮助。谢谢。打开并阅读文件,然后: file = open('myfile.txt')

我有一个包含课程名称的文本文件。我希望它们成为我模型中的选择。但我不知道如何填充课程选择。看起来选择将被硬编码。但是这些选项需要是可编辑的

我目前所拥有的一切如下:

COURSE_CHOICES = ?????

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

我是新来的。感谢所有的帮助。谢谢。

打开并阅读文件,然后:

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

我不知道您的文件是如何构造的……所以我只能说这些。

我不太确定您想要实现什么。但将所有课程存储在模型中是一件明智的事情:

# 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()
创建(普通)表单时,可以使用
modelcoocefield

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

或者创建一个
模型表单

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


注意:我没有测试代码。

您是否尝试过类似于
choices=get\u choices\u from\u file
?其中,
get\u choices\u from\u file
是一个以正确格式返回所有选项的方法。我尝试过类似的方法,但我会尝试一下,我是python/django新手,这正是我想要的。我的文件是一行一行构建的,所以每一行都是一个“过程”/“选择嘿,伙计,我只是想说谢谢,我不得不编辑了你的代码,但在修复了我的数据库后,我终于让它工作了,再次感谢。不客气。您可以接受答案,如果觉得有用,请向上按箭头!;)快乐编码!我很想向上按箭头,但是我的代表太低了,这个问题没有让我有一个好的开始,因为它目前是-1 lol。谢谢,尽管我真的很感激。堆栈溢出的想法是,问题及其答案对其他人也很有用。因此,问题必须具有一定的质量。有人认为你的Q不是一个好的贡献。你靠各种各样的东西赢得名声。喜欢阅读关于页面;)。你可以接受答案。。。点击复选标记(并检查您的代表)。