gpt4 book ai didi

django - 在 django rest 框架中执行 perform_update 时检查实例的当前值

转载 作者:行者123 更新时间:2023-12-05 03:02:38 25 4
gpt4 key购买 nike

我正在使用 Django Rest 框架。这是模型:

class TimeSlot(models.Model):
date_start = models.DateTimeField(default=None, null=True, blank=True)
booked = models.BooleanField(default=False)
user = models.ForeignKey(User, related_name='time_slots', on_delete=models.SET_NULL, default=None)

这是我的序列化器:

class CreateBookingSerializer(serializers.ModelSerializer):
class Meta:
model = TimeSlot
fields = ('id','booked','user',)
extra_kwargs = {'booked': {'required': True}}

这是我的观点:

class CreateBookingViewSet(viewsets.ModelViewSet):
queryset = TimeSlot.objects.all()
serializer_class = CreateBookingSerializer
http_method_names = ['put']
def perform_update(self, serializer):
if (self.request.data['booked'] == 1):
serializer.save(user=self.request.user, booked=True)

我只想在当前值为 False 时将 booked 设置为 true。我正在使用 PUT 方法。所以我的网址是 /create_booking/id/

如果我能在我的 View 中获得 id,我会检查当前的 booked 值!如何获取id

最佳答案

你可以尝试使用self.kwargs['id']

class CreateBookingViewSet(viewsets.ModelViewSet):
queryset = TimeSlot.objects.all()
serializer_class = CreateBookingSerializer
http_method_names = ['put']
def perform_update(self, serializer):
id = self.kwargs['id']
if (self.request.data['booked'] == 1):
serializer.save(user=self.request.user, booked=True)

关于django - 在 django rest 框架中执行 perform_update 时检查实例的当前值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54634699/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com