2016-09-30 7 views
0

に検証するために、私はDjangoのRESTフレームワークを使用して、私は部屋の予約を表すモデルを持っている:どこ他のモデルとの関係

class Booking(models.Model): 

    user = models.ForeignKey(settings.AUTH_USER_MODEL) 

    begin_date = models.DateField() 
    end_date = models.DateField() 

予約は時間的に重複することはできません。だから私は、ユーザーが以前のすべての予約と部屋を予約したい日付を比較する必要があります。

私はこれが私のserializers.ModelSerializerクラスで

  • は、バリデータを使用して検証することができますが、私の検証はBookingCreateModelMixinまたは
  • create方法でModelViewSet
  • を消毒については、実際にはありません - saveメソッドを使用して保存するときにモデル化します。

Django RESTフレームワークの開発者は、この特定の問題をどのように意図していましたか?

答えて

0

通常、シリアライザの保存を呼び出す前に、ビジネスビューまたは追加の検証ステップを呼び出すために、ビューの作成/更新を書き換えることでこれを解決します。

+0

-1このロジックをビューに配置すると、そのビューを常に使用してモデルを作成する必要があることを意味します。たとえば、django管理者を使用している場合や、コンソールで手動で作成した場合は、検証は呼び出されません。データの整合性が損なわれます。皮肉なビューと太ったモデルを保つ必要がありますhttp://django-best-practices.readthedocs.io/en/latest/applications.html#make-em-fat – pleasedontbelong

+0

もっと詳しくお読みください。あなたは*ビジネス層を呼び出す*。また、ストレージモデルとビジネスレイヤーが混在しているため、fatモデルは悪いデザインです... – Linovia

+0

geez申し訳ありません:PIはあまりにも速いですが、まだ検証はモデルで行うべきだと考えています – pleasedontbelong

関連する問題