【问题标题】:how to send photographer id in django rest framework如何在 django rest 框架中发送摄影师 ID
【发布时间】:2022-01-25 19:35:15
【问题描述】:

我如何在 django rest 框架中发送摄影师 ID。与发布请求。当前用户是完美发送,但我想发送摄影师 id。 请帮我解决这个问题

这是我的代码。

models.py

class Booking(models.Model):
    user = models.ForeignKey(User,on_delete=models.CASCADE, null=True)
    photographer = models.ForeignKey(photographer,on_delete=models.CASCADE,null=True, 
    related_name="photographer_set")
    address = models.CharField(max_length=100, null=True)
    near_by = models.CharField(max_length=100, null=True)
    phone_number = models.BigIntegerField(null=True)
    status = models.BooleanField(default=False)
    date = models.DateField(default=datetime.date.today()
    
    @staticmethod
    def get_booking_by_customer(user_id):
        return Booking.objects.filter(user=user_id).order_by('_date')

serializer.py

class bookingserializer(serializers.ModelSerializer):
    #photographer_set = photographerSerializer()
    #user = serializers.PrimaryKeyRelatedField(read_only=True, default=serializers.CurrentUserDefault())
    class Meta:
        model = Booking
        fields = ['id', 'address','near_by','phone_number','date',"photographer",'user','status']
        depth = 1

views.py


    class bookings(generics.GenericAPIView):
        permission_classes = (permissions.IsAuthenticated,)
        serializer_class = bookingserializer
        @csrf_exempt
        def post(self, request):
            booking = request.data
            serializer = self.serializer_class(data=booking)
            #booking.status=True
            self.request.data.get('photographer_id')
            serializer.is_valid(raise_exception=True)
            serializer.save(user=self.request.user)
            return Response(status=status.HTTP_201_CREATED)

【问题讨论】:

    标签: django-rest-framework


    【解决方案1】:

    您可以从前端传入'photographer_id' 请求正文。

    然后在您的 view.py 中,您可以使用self.request.data.get('photographer_id') 获取数据。

    如果您使用的是 POSTMAN:

    试试下面:

    class bookings(generics.GenericAPIView):
        permission_classes = (permissions.IsAuthenticated,)
        serializer_class = bookingserializer
        @csrf_exempt
        def post(self, request):
            booking = request.data
            serializer = self.serializer_class(data=booking)
            #booking.status=True
            photographer_id = self.request.data.get('photographer_id')
            serializer.is_valid(raise_exception=True)
            serializer.save(user=self.request.user, photographer=photographer_id)
            return Response(status=status.HTTP_201_CREATED)
    

    【讨论】:

    • 这不起作用
    • 如果您使用的是postman,您可以根据截图和编辑后的答案进行检查。
    • 我在我的代码中包含了你的 self.request.data.get('photographer_id') 这一行。但这不起作用。在邮递员中,所有详细信息,如地址,near_by 已发送,但摄影师 ID 未发送
    • 您需要传递从前端获取的数据并保存。请参阅编辑后的答案。
    猜你喜欢
    • 2022-01-07
    • 2015-01-26
    • 2017-02-03
    • 2020-06-01
    • 2021-05-23
    • 2022-01-11
    • 2015-02-02
    • 1970-01-01
    • 2021-01-17
    相关资源
    最近更新 更多