1

さて、私はこのようなモデルを持っています:

class Airplane(models.Model):
    tail = models.ForeignKey(Tails)
    wheel = models.CharField(max_length=500,blank=True)
    window = models.CharField(max_length=500,blank=True)

    def clean(self):
        if self.tail and self.wheel and self.window:
            raise ValidationError("Can't have all three, choose tail and one more")

ここで、Djangoadminを使用して新しい飛行機のレコードを追加しようとすると。両方のフィールドを空白のままにして保存すると、行を指すこのDjangoエラーが発生しますif self.tail and self.wheel

DoesNotExist at /admin/MyProject/airplane/add/

Request Method:     POST
Request URL:    http://44.101.44.172:8001/admin/MyProject/airplane/add/
Django Version:     1.2.5
Exception Type:     DoesNotExist
Exception Value:    

Exception Location:     /usr/lib/python2.7/site-packages/django/db/models/fields/related.py in __get__, line 299
Python Executable:  /usr/bin/python
Python Version:     2.7.0

Djangoは、クリーンに実行する前に、必須フィールドが入力されていることを確認するべきではありませんか?いずれにせよ、この問題を処理するための最良の方法は何ですか?

4

2 に答える 2

0

テールフィールドはnull値を受け入れません。それを機能させるには、それに追加する必要がありますnull=True

于 2011-06-27T20:56:15.730 に答える
0

回避策として、このモデルのadmin.pyで検証を使用してカスタムフォームを定義することになりました。

必要なフィールドが入力されたとDjangoが判断する前に、model.cleanが呼び出される理由はまだわかりません。

于 2011-06-28T13:20:49.480 に答える