我有一个选择框,其中包含一个名为“Event”的模型。在我的生产服务器上,结果得到了控制。
我在每个请求中都需要此选择框中所有事件的最新版本。我在#django问过,有人说我应该用lambda。我用lambda尝试了这个但是它不起作用。当我添加新事件时,仍然会获得旧值,只有apache重新启动才能显示最新版本。
我的代码有问题吗?
#forms.py
events = lambda : [(e.id, e.title) for e in Event.objects.all().order_by('-date')]
class EventForm(Form):
event_title = ChoiceField(label='Veranstaltung', choices=events())
答案 0 :(得分:1)
Grrr ...评论框给了我很少的编辑空间。我会在这里试试:
解决方法是使用表单的__init__
,即
class EventForm(Form):
event_title = ChoiceField(label='Veranstaltung', choices=[])
def __init__(self, *args, **kwargs):
super(EventForm, self).__init__(*args, **kwargs)
self.fields['events'].choices = [(e.id, e.title) for e in Event.objects.all().order_by('-date')]
顺便问一下,您考虑使用ModelChoiceField
吗?
答案 1 :(得分:0)
此答案无效,请参阅评论
你正在评估lambda,使它无用。
像这样放下括号:
event_title = ChoiceField(label='Veranstaltung', choices=events)
祝你好运!