如此新的python& django在一个项目上移动得很好,但无法找到上述问题的简单答案:
模型就像这样
class Projects(models.Model):
project_name = models.CharField(max_length=200)
project_description = models.TextField(blank=True)
active = models.BooleanField()
def __unicode__(self):
return self.project_name
我有其他模型将上述内容称为ForignKey,如
class Estimates(models.Model):
client = models.ForeignKey(Clients)
estimate_summary = models.CharField(max_length=200,blank=True)
project = models.ForeignKey(Projects,default=-1,blank=True)
我知道我可以设置blank=False
以确保我得到一个有效的选择,但我想允许他们选择不将项目分配给估计,在这种情况下我会存储一个默认的整数-1什么的。
然而问题是我无法弄清楚如何让表单使用整数作为其默认值而不是“”< - (空字符串)
<option selected="selected" value="">---------</option>
<option value="1">Sample Project</option>
我看到的所有问题和答案都围绕着将---------
更改为其他文本或强制您一起删除空白选项。我只想要
<option selected="selected" value="-1">---------</option>
所以我的表格将验证
写完问题后,我想知道我是否可以自己插入一个选项,并在添加到表单时使用empty_label=None
field2 = forms.ModelChoiceField(queryset=..., empty_label=None)
答案 0 :(得分:1)
首先,您不希望使用-1的整数作为默认值。对于ForeignKeys,你通常使用null = True和blank = True如果你不需要它(不要忘记删除并重新创建表或使用south来迁移它 - 也删除默认值,因为None是一个有效的选项使用null = True,因此不需要默认值)。这样,如果你没有分配一个项目,你将在数据库中获得NULL,这也是Admin支持的 - -1将比它解决的更多。
一旦使用null = True,blank = True ModelChoiceField将自动按您的意愿工作。