0
に検証するために、私はDjangoのRESTフレームワークを使用して、私は部屋の予約を表すモデルを持っている:どこ他のモデルとの関係
class Booking(models.Model):
user = models.ForeignKey(settings.AUTH_USER_MODEL)
begin_date = models.DateField()
end_date = models.DateField()
予約は時間的に重複することはできません。だから私は、ユーザーが以前のすべての予約と部屋を予約したい日付を比較する必要があります。
私はこれが私のserializers.ModelSerializer
クラスで
- は、バリデータを使用して検証することができますが、私の検証は
Booking
でCreateModelMixin
または - の
create
方法でModelViewSet
で - を消毒については、実際にはありません -
save
メソッドを使用して保存するときにモデル化します。
Django RESTフレームワークの開発者は、この特定の問題をどのように意図していましたか?
-1このロジックをビューに配置すると、そのビューを常に使用してモデルを作成する必要があることを意味します。たとえば、django管理者を使用している場合や、コンソールで手動で作成した場合は、検証は呼び出されません。データの整合性が損なわれます。皮肉なビューと太ったモデルを保つ必要がありますhttp://django-best-practices.readthedocs.io/en/latest/applications.html#make-em-fat – pleasedontbelong
もっと詳しくお読みください。あなたは*ビジネス層を呼び出す*。また、ストレージモデルとビジネスレイヤーが混在しているため、fatモデルは悪いデザインです... – Linovia
geez申し訳ありません:PIはあまりにも速いですが、まだ検証はモデルで行うべきだと考えています – pleasedontbelong