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を組み合わせて使用​​します(テーブルを削除して再作成するか、南を使用して移行することを忘れないでください。デフォルトを削除してください。Noneは有効なオプションです。 null = Trueの場合、デフォルトは必要ありません)。このように、プロジェクトを割り当てない場合、データベースでNULLが発生します。これは、管理者がサポートするものでもあります。-1は、解決する以上に機能しなくなります。

null = Trueを使用するとすぐに、blank=TrueModelChoiceFieldが必要に応じて自動的に機能します。

于 2012-04-20T07:15:08.853 に答える