如何使用序列化和modelViewSet

时间:2015-07-29 09:02:40

标签: serialization model django-rest-framework model-view

这些是型号:

class Event (models.Model):
    status = models.CharField(max_length = 30, blank = True)
    time = models.DateTimeField()
    point = models.ForeignKey(Point)
    person = models.ForeignKey(Person)
    device = models.ForeignKey(Device)
    organization = models.ForeignKey(Organization)

class Presence(models.Model):
    point = models.ForeignKey(Point)
    person = models.ForeignKey(Person)
    date_from = models.DateTimeField()
    date_to = models.DateTimeField()

这是SERIALIZERS:

class EventSerializer(serializers.ModelSerializer):
    person = serializers.SlugRelatedField(queryset=Person.objects.all(), slug_field='card_tag')
class Meta:
    model = Event
    fields = ['id','time','point','person','device','organization']

这是API:

class EventAPI(viewsets.ModelViewSet):
     serializer_class = cs.EventSerializer

这是网址:

url(r'^event/', api.EventAPI.as_view({'post':'create'}), name='event_create'),

所以我想要这些:

  

每次创建Event对象后,按%2检查(通过card_tag获取对象数,这是请求体),如果它的编号   事件%2 == 0 =>创建Presence对象,我该怎么做?

谢谢,抱歉

1 个答案:

答案 0 :(得分:1)

您应该可以使用perform_create方法,默认情况下类似于:

def perform_create(self, serializer):
    serializer.save()

现在你可以覆盖它并做你想做的任何事情。

def perform_create(self, serializer):
    serializer.save()
    if ..something.. % 2:
        Presence.objects.create(...)