2016-06-15 4 views
-3

を編集中に、私は次のモデルがあります:DISASSOCIATE外部キーは

class Event(models.Model): 
    assigned_to= models.ForeignKey(user) 
    (...) # Some other fields 

を私が編集中のモデルの検証機能を使用する必要がある場合、私は、イベントインスタンス

event = Event(assigned_to=someuser, **kwargs) 
event.save() 

を作成イベントは、

event.assigned_to = None 

event.full_clean()を行うために、Djangoはそれと文句を言い外部キーの関係をnullに設定することはできません。私はValidationErrorをを使用してエラーを取得するために、これを回避する必要がありますどのように

Cannot assign None: "Event.assigned_to" does not allow null values. 

はForeignKeyのフィールドに指定なしのためfull_clean()中に発生しました。

+0

assigned_to = models.ForeignKey(user、null = True)は、データベースが割り当てられていないイベントでデータベースを更新したくない場合に役に立ちません。 –

+0

@MadWombat – eskawl

+0

その場合、なぜ検証で外部キーにNoneを割り当てる必要がありますか? –

答えて

0

私はインスタンス上のASSIGNED_TOはなし

def clean(self): 
    if self.assinged_to is None: 
     raise ValidationError({'assigned_to': "Whatever error"}) 

full_clean()として呼び出しませんかどうかを確認するために@Madウォンバットが提案されているようForeignKeyの上null=Trueを使用してエラーを生成するために管理し、モデルにきれいなメソッドをオーバーライドすることにより、 clean()メソッドでは、必要に応じて検証エラーが発生しました。