1

Django には次のようなモデルがあります。

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

目標はparent、プロジェクトの階層構造を表すフィールドの選択ウィジェットを使用して、このモデルのフォームを作成することです。クエリセットをソートし、各選択肢のラベルの前にインデントを追加して、このフィールドの選択肢のペアを再定義しようとしました。しかし(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

このフィールドのデフォルトの空の選択は失われます。元に戻す方法を知っている人はいますか?前もって感謝します。

4

1 に答える 1

2

__init__、次を追加します。

self.fields['parent'].choices = ordered
self.fields['parent'].choices.append('', u'None)
于 2012-09-17T13:03:51.780 に答える