0

对 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)
4

1 回答 1

1

首先,您不想使用 -1 的整数作为默认值。对于 ForeignKeys,如果不需要,通常将 null=True 与 blank=True 结合使用(不要忘记删除并重新创建表或使用 south 迁移它——也删除默认值,因为 None 是一个有效选项使用 null=True ,因此不需要默认值)。这样,如果您不分配项目,您将在数据库中获得 NULL,这也是管理员支持的——-1 会破坏比它解决的更多。

只要您使用 null=True,blank=True ModelChoiceField 将自动按照您的需要工作。

于 2012-04-20T07:15:08.853 回答