第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會(huì)有你想問的

Django:序列化QuerySet并將其發(fā)送到模板以與Javascript一起使用

Django:序列化QuerySet并將其發(fā)送到模板以與Javascript一起使用

Qyouu 2019-04-11 13:15:01
我有一個(gè)QuerySet,我需要將它發(fā)送到我的模板,因?yàn)槲倚枰倏v它的值來生成一個(gè)JS數(shù)組。但在我看來,我使用: order_items = json.dumps(order_items)我明白了:Object of type QuerySet is not JSON serializable視圖:import jsondef thanks_deposit_payment(request):    order_number = Order.objects.latest('id').id    total = Order.objects.latest('id').total    costo_despacho = Order.objects.latest('id').shipping_cost    order_items = OrderItem.objects.filter(order=Order.objects.latest('id'))    # order_items = json.dumps(order_items)    response = render(request, 'thanks_deposit_payment.html', dict(order_number=order_number, total=total,                                                                   order_items=order_items, costo_despacho=costo_despacho))    return responsemodels.py:class OrderItem(models.Model):    order = models.ForeignKey(Order, on_delete=models.CASCADE)    product = models.CharField(max_length= 200)    quantity = models.CharField(max_length= 200)    size = models.CharField(max_length=200)    price = models.DecimalField(max_digits=10, decimal_places=2, verbose_name= 'PEN Price')    file = models.FileField(upload_to='files', blank=True, null=True)    comment = models.CharField(max_length=200, blank=True, null=True, default='')    uploaded_at = models.DateTimeField(auto_now_add=True)    class Meta:        db_table = "OrderItem"我需要使用從后端發(fā)送的order_items中的項(xiàng)來生成products數(shù)組: <script>        window.dataLayer = window.dataLayer || [];        window.dataLayer.push({            event: 'eec.purchase',            ecommerce: {                currencyCode: 'PEN',                purchase: {                    actionField: {                        id: {{ order_number }},                        affiliation: 'Stickers Gallito E-Commerce',                        revenue: {{ total }},                        shipping: {{ costo_despacho }},                        coupon: 'SUMMER2019'                    }                },                products: [
查看完整描述

2 回答

?
拉風(fēng)的咖菲貓

TA貢獻(xiàn)1995條經(jīng)驗(yàn) 獲得超2個(gè)贊

您可以使用Django JSON Serializer將queryset轉(zhuǎn)換為JSON String:


from django.core.serializers import serialize

order_items = OrderItem.objects.filter(order=Order.objects.latest('id'))

order_items = serialize('json', order_items, fields=['id', 'product', 'price'])? # the fields needed for products

然后在模板中使用它:


?products: JSON.parse('{{ order_items | safe }}')


查看完整回答
反對(duì) 回復(fù) 2019-05-17
?
墨色風(fēng)雨

TA貢獻(xiàn)1853條經(jīng)驗(yàn) 獲得超6個(gè)贊

試試這個(gè):


def thanks_deposit_payment(request):

 order_number = Order.objects.latest('id').id

 total = Order.objects.latest('id').total

 costo_despacho = Order.objects.latest('id').shipping_cost

 order_items = OrderItem.objects.filter(order=Order.objects.latest('id'))


 return JSONResponse(...here goes the dict with all data to send to view)

甚至,如果你想發(fā)送所有這個(gè)查詢集,你可以在dict中發(fā)送一個(gè)dict。)稍后,我建議你使用AJAX和JQuery。


查看完整回答
反對(duì) 回復(fù) 2019-05-17
  • 2 回答
  • 0 關(guān)注
  • 1277 瀏覽
慕課專欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)