2010-11-02 82 views
0

我的应用程序有一个表单,它由用户完成并提交给数据库。 我有3个forms.ModelChoiceFields基于models.ForeignKey。 我通过我的观点将它们设置为初始值,其中2个按预期工作。 但是,第3个下拉列表使用2个字元定义作为显示,名字和姓氏。我似乎无法弄清楚如何通过调用2个单词来初始填充表单。Django设置ForeignKey/ModelChoiceField的初始条件

#in views.py
form = EmployeeForm(initial={'facility':'None' # this works
'supervisor':'_ None'} # does not work

对于工厂,没有一个是在一个数据库中的字符串项,而不是无 “价值” 对于主管,_无以dB

#part of class Facility
def __ unicode__ (self): #had to added spaces for _ _ to show here
return self.fac_name

第一/姓氏条目

#part of class Supervisor
def __ unicode__ (self): #same syntax note as above
return u'%s %s' % (self.first_name, self.last_name)

下拉式填充和正确提交 - 我唯一的问题是设置主管的初始值。我如何用两个名字来初始值?

回答

0

你需要用正确的第一/姓氏传递的实例作为初始值:

default_supervisor = Supervisor.objects.get(first_name='_', last_name='None') 
form = EmployeeForm(inital={'supervisior': default_supervisor}) 
+0

谢谢!现在知道了,我可能会尝试使用1个单词作为外键下拉表单,少用代码! – 2010-11-02 20:47:40

+0

我不知道你到底在做什么,但通常更可取的是使用'None'而不是现有的数据库条目! – 2010-11-02 21:43:42

+0

嗯,我输入'无'(字符串值)数据库条目,因为当时所需的字段尽管(我认为),他们不应该。那么,正如我发现的那样,SQLite无法更新列属性,所以他们是必需的,因为我的原始模型参数。幸运的是,由于我没有任何真实的数据,我只是将数据库重建为新模型,并修复了我设置为null = blank = true但仍然存在错误的字段所带来的许多其他问题当没有。学过的知识。 – 2010-11-09 14:03:40