2

Django アプリには次のモデルがあります。

class Property(models.Model):
    ...various attributes...

class Booking(models.Model):
    property = models.ForeignKey(
        Property
    )
    ...more attributes...

のさまざまな制約をチェックするclean()メソッドを実装しました。これらの制約の多くは、との関連付けに依存します。そのため、の clean() メソッドには次のものがあります。BookingBookingBookingPropertyBooking

if self.property is not None:
    ...Property related validations...

管理アプリケーションで新しい予約を入力し、何も入力せずに [保存] ボタンを押すと、DoesNotExist exceptionon が生成されself.property is not Noneます。欠落している関連付けは、Django の個々のフィールド検証によって取得する必要があることを理解しています。

メソッドをコメントアウトするとclean()、上記は発生せず、空白の予約フォームを送信すると、欠落している関連付けがエラーとして適切にフラグ付けされます。

私は明らかに何かが欠けていますが、何が手がかりがありません...

4

1 に答える 1

1

それが答えだったので、答えとして投稿:

条件を次のように変更してみましたか:

if hasattr(self, 'property') and self.property is not None

エラーメッセージに基づいて解決策を推測したため、根本的な原因はわかりません。Django ORM は保存時に外部キーの関連付けを動的に作成する可能性があると思います。そのため、これは必須の属性ですが、Booking インスタンスが新しく保存されていないため、まだ作成されていません。

于 2012-12-27T23:32:50.823 に答える