2012-03-03 35 views
2

我有一个模型,像这样:如何允许在一个形式的空白选项时,该模型不允许它(在Django)

class Cert(models.Model): 
    COUNTY_CHOICES = (
     ('Choice1', 'Choice1'), 
     ('Choice2', 'Choice2'), 
     ) 
    someField = models.CharField(max_length=12, unique=True) 
    county = models.CharField(max_length=10, choices=COUNTY_CHOICES) 

然后我有一个表格,像这样:

class SearchForm(forms.Form): 
    someField = forms.CharField(max_length=12, required=False) 
    county = forms.ChoiceField(choices=Cert.COUNTY_CHOICES, required=False) 

我希望我的搜索表单允许“空白”或“全部”选项,但我不希望我的模型允许它。有没有办法做到这一点,还是我必须创建另一个选择列表?我试图在表单中不要求,我尝试添加一个“初始”设置,这两个都不能解决我的问题。

回答

3

COUNTY_CHOICES构建另一个选择元组,并在表单中使用它。

search_choices = (('', ''),) + Cert.COUNTY_CHOICES 
+0

谢谢,这是有效的。我想这可能是一些内置的解决方案(我尝试required = False,这显然不工作)。 – ntaggart 2012-03-03 17:54:38

+0

'ModelChoiceFields'有一个'empty_label'选项,但在这种情况下你必须自己做。幸运的是,这不是太棘手;-) – Alasdair 2012-03-03 18:04:37

+0

它似乎是真的设计映射一个外键类型的关系。如果我理解了这个答案,我想我需要创建一个只包含选项(并在查询集中使用该表)的表,但我认为这不是很优雅。我是否正确理解这一点? – ntaggart 2012-03-03 22:08:13

相关问题