/ / Django RESTフレームワークでのSlugField検証に推奨されるアプローチは何ですか? - django、django-rest-framework

Django RESTフレームワークでのSlugField検証に推奨されるアプローチは何ですか? - django、django-rest-framework

Django RESTフレームワークを使用してRESTfulなAPIを構築しています。私のモデルの1つは、このように少し見えます:

class Zone(models.Model):
name = models.SlugField(max_length=50, unique=True)
... other fields

だから私はこのようなシリアライザを構築しました:

class ZoneSerializer(serializers.ModelSerializer):

class Meta:
model = Zone
fields = ("name", ... other fields)

新しいゾーンを作成するためにデータを投稿するとき、私がどの程度の検証を担当しているか、どれくらい自動的に行うべきかはわかりません。次のテストケースを試しました:

  1. いつ name 有効なスラッグが50文字以下であれば、検証は成功します。
  2. いつ name 50文字以上の有効なスラッグである場合、検証に失敗し、適切なエラーメッセージが表示されます。
  3. いつ name 無効なスラッグ(「abc def」など)の場合、検証は成功し、無効な名前でゾーンが作成されます。

コードを掘り下げて見ると、 長さ フィールドの有効性は、 django.core.validators.MaxLengthValidatorrun_validatorsrest_framework/fields.py、しかし validate_slug バリデータのリストには含まれていません。

私は、 validate_name 私のシリアライザにこのようなメソッド:

def validate_name(self, attrs, source):
"""
Make sure this is a slug field
"""
value = attrs[source]
if not validators.validate_slug(value):
raise serializers.ValidationError("Not a slug")
return attrs

しかし、これは過度のようです。私はここで何か間違っていますか?

回答:

回答№1は2

そこには有効なプルリクエストがあるようなサウンドがあります:) validate_slug おそらく自動的に起こるはずです。

行動のベストコース:

  1. DjangoのSlugフォームフィールドの動作をRESTフレームワークのシリアライザフィールドの動作と重複して確認してください。間違いなく違いますか?
  2. 問題のチケットを発行し、あなたが「何から」決定したことに注意してください(1)。
  3. 失敗したテストケースを作成し、プルリクエストとして送信してください。
  4. 可能であれば、PRを修正プログラムで更新してください。
  5. 利益!!! 11 !!!! (まあ、クレジットであなたの名前を取得し、修正に貢献したために素敵な温かい気持ちになる)

乾杯、

トム