【问题标题】:How to create object of one Model after creating another Model's object using serialization and modelViewSet使用序列化和 modelViewSet 创建另一个模型的对象后如何创建一个模型的对象
【发布时间】:2015-10-20 03:55:50
【问题描述】:

这些是模型:

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

这是序列化器:

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 获取对象的数量,它在请求的正文中),如果它是数字 of events %2 == 0 => 创建 Presence 对象,我该怎么做?

谢谢和抱歉

【问题讨论】:

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


    【解决方案1】:

    您应该能够使用perform_create 方法,默认情况下看起来像:

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

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

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

    【讨论】:

      猜你喜欢
      • 2011-07-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多