【发布时间】:2017-09-05 02:19:20
【问题描述】:
我是 django-rest-framework 的新手。我正在构建一个员工调度应用程序,其中我有一个用 drf 和 angular 前端构建的 REST Api。下面是我的一个模型,它是对应的序列化器和视图集。
型号:
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 对不起,是的,我就是这个意思。如果新发布的活动与现有活动的日期重叠,则显示“与现有活动重叠”的消息字段
标签: django django-rest-framework