Как я могу получить определенные данные в формате 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.