0

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

因此,例如,我的数据库中存储有带有DateTime字段的帖子。我正在尝试做的是创建一个表单,其中包含基于帖子表中存在的年份范围的选项。

IE

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

2013-06-27 03:21:15

我们还有另一个价值

2012-06-27 03:00:20

我想在 post 表中显示一个带有选择选项的表格,并且没有重复;

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

ModelChoiceField 是否允许我通过单个查询来执行此操作,或者我是否需要处理和构建一个包含年份的列表。

4

2 回答 2

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='') 

这是这样做的好方法还是效率低下/错误?

于 2013-06-29T12:23:46.853 回答
0

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

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

于 2013-06-29T03:59:07.993 回答