django - 如何在选择领域找回一个空的选择?

我在Django中有一个模型,如下所示:

class Project(models.Model):
    name = models.CharField(max_length=140)
    parent = models.ForeignKey('self', blank=True, null=True)

目标是为 parent 字段的select小部件创建此模型的表单,该小部件将表示项目的层次结构 . 我尝试通过对查询集进行排序并在每个选项的标签前添加缩进来重新定义此字段的选择对 . 但是当我为表单制作一对 (project.id, project.name) 的列表时

class ProjectForm(ModelForm):
    def __init__(self, *args, **kwargs):
        super(ProjectForm, self).__init__(*args, **kwargs)
        ordered = []
        // ... making ordered list ...
        self.fields['parent'].choices = ordered

此字段的默认空选择会丢失 . 有谁知道怎么回来?提前致谢 .

回答(1)

2 years ago

__init__ 中,添加:

self.fields['parent'].choices = ordered
self.fields['parent'].choices.append('', u'None)