根据表中的最小和最大年份创建选择的模型形式?

时间:2013-06-29 02:04:20

标签: django

我正在尝试创建一个ModelChoiceField,其选项基于查找数据库中多个帖子中存在的年份。

例如,我的数据库中存储了一个带有DateTime字段的帖子。我试图做的是创建一个表格,其中的选项基于邮政表格中的年份范围。

我们有一个字段为date_created的帖子。值是

  

2013-06-27 03:21:15

我们有另一个值

  

2012-06-27 03:00:20

我想显示一个表格,其中包含邮政表格中每年的选择选项,没有重复项;

<option value="2013">2013</option>
<option value="2014">2014</option>

ModelChoiceField允许我使用单个查询执行此操作,还是需要处理和构建包含年份的列表。

2 个答案:

答案 0 :(得分:1)

感谢lalo指出我正确的方向。我设法使用以下内容弄明白了;

    years_list = []
choices = []
year_list = Post.objects.all().values_list('date_created').distinct()

for years_avail in year_list:
    years_list.append(years_avail[0].strftime('%Y'))

for year in years_list:
    choice =(year, year)
    choices.append(choice)

years = forms.ChoiceField(choices, label='') 

这是一个很好的方法来做这个还是这个效率低下/错误?

答案 1 :(得分:0)

ModelChoiceField用于基于外键的模型选择。我认为您必须使用ChoiceField并在运行时生成选项。

告诉我你在哪里使用表格,也许可以告诉你该怎么做。