django-rest-frameworkの新機能です。私はdriftとfrontendを使ってREST APIを構築した従業員スケジューリングアプリケーションを構築しています。以下は私のモデルの1つで、それは対応するシリアライザとビューセットです。django-rest-frameworkで警告メッセージを追加する
モデル:
class Eventdetail(models.Model):
event = models.ForeignKey(Event, models.DO_NOTHING, blank=True, null=True)
start = models.DateTimeField(blank=True, null=True)
end = models.DateTimeField(blank=True, null=True)
employee = models.ForeignKey(Employee, models.DO_NOTHING, blank=True, null=True)
location = models.ForeignKey(Location, models.DO_NOTHING, blank=True, null=True)
is_daily_detail = models.BooleanField
def __str__(self):
return self.event
シリアライザ:
class LocationTrackSerializer(serializers.ModelSerializer):
def __init__(self, *args, **kwargs):
many = kwargs.pop('many', True)
super(LocationTrackSerializer, self).__init__(many=many, *args, **kwargs)
location = serializers.SlugRelatedField(slug_field='location_name', queryset=Location.objects.all())
location_color = serializers.CharField(source='location.location_color', read_only=True)
class Meta:
model = Eventdetail
fields = ('id','employee','location','location_color','start','end')
ビューセット:
class LocationTrackViewSet(viewsets.ModelViewSet):
queryset = Eventdetail.objects.all()
serializer_class = LocationTrackSerializer
def create(self, request, *args, **kwargs):
self.user = request.user
listOfThings = request.data['events']
serializer = self.get_serializer(data=listOfThings, many=True)
if serializer.is_valid():
serializer.save()
headers = self.get_success_headers(serializer.data)
return Response(serializer.data, status=status.HTTP_201_CREATED,
headers=headers)
return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)
あなたが見ることができるように、これはすべての従業員のイベントの詳細を公開しています。新しいイベントが投稿されると、投稿されたイベントの開始時刻と終了時刻が既存のイベントと重複しているかどうかを確認し、作成後に重複したイベントの情報を含む警告メッセージを表示する必要があります。私はまだ保存を許可したいが、保存後に警告を返すだけである。私はこれを行う方法を理解しようとしています。私はバリデータを作成する方法を見ていましたが、もしこれがどうすればいいのか分かりません。どんな助けもありがとう!ありがとう。次のように
あなたは警告とはどういう意味ですか?シリアライザのデータと一緒に追加のデータは、それですか? –
@SachinKukreja申し訳ありませんが、それは私が意味するものです。新たに通知されたイベントが既存のイベントと重複する日付を有する場合、「既存のイベントと重複する」というメッセージフィールドは、 – ash