Как я могу получить определенные данные в формате JSON

Я хочу получить определенные данные после выбора опции в форме. Когда я выбираю, я получаю данные в формате JSON, которые я не могу разделить. Я пробовал obj.purchase_price, но получил undefined. мой следующий код предоставляет следующие данные

           [{"model": "acc.productdetails", "pk": 4, "fields": {"purchase_price": "214.00"}}]

Мне нужно значение purchase_price для моей формы. Пожалуйста, помогите мне разделить это значение. Мои коды приведены ниже

Виды

    def priceFilter(request):
        product_id = request.GET.get('product_id',None)

        price = {
                
             'data':serializers.serialize("json",ProductDetails.objects.filter(id=product_id),
              fields=('purchase_price',))
                }

        return JsonResponse(price) 

На моей странице скрипт

        <script>
                $("#id_price").change(function () {
                var form = $(this).closest("form");
                $.ajax({
                 url: form.attr("data-validate-price-url"),
                 data: form.serialize(),
                 dataType: 'json',
                 success: function (price) {
                        if (price.data) {
                        let obj = price.data ;
                        alert(obj) ;

                        }
                       }
                     });

                   });
       </script>

Я хочу показать свои данные здесь

       <input type="text" name="price" class="form-control" id="p_price" required>

Сериализатор возвращает строку, которая является JSON блобом, а не списком со словарями и т.д.

Вы можете обернуть результат в словарь с помощью:

from django.shortcuts import get_object_or_404

def priceFilter(request):
    product_id = request.GET.get('product_id')
    product = get_object_or_404(Product.objects.only('price'), id=product_id)
    price = {
        'price': product.price
    }
    return JsonResponse(price)

В ответе вы можете получить объект с помощью:

success: function (data) {
    if (data.price) {
        let obj = data.price;
        alert(obj) ;
    }
}

Примечание: Часто лучше использовать get_object_or_404(…) [Django-doc], чем использовать .get(…) [Django-doc] напрямую. В случае, если объект не существует, например, потому что пользователь сам изменил URL, get_object_or_404(…) приведет к возврату ответа HTTP 404 Not Found, в то время как использование .get(…) приведет к ответу HTTP 500 Server Error.

Вернуться на верх