Anuar Akhmetov
Anuar Akhmetov

Reputation: 173

How to create object of one Model after creating another Model's object using serialization and modelViewSet

These are MODELS:

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()

This is 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']

this is API:

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

This is URL:

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

so I want these:

after every creation of Event object, check it by %2 (getting number of objects by card_tag, which is in body of request), if it's number of events %2 == 0 => create object of Presence, how can I do it ?

Thanks and sorry

Upvotes: 2

Views: 152

Answers (1)

pingul
pingul

Reputation: 3473

You should be able to use the perform_create method, which by default looks something like:

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

Now you can override it and do pretty much anything you want.

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

Upvotes: 1

Related Questions