Мне нужно изменить поле product
на name
моих объектов OrderItem из-за того, как Google Enhanced Ecommerce запрашивает данные для обработки.
Обязательные поля для электронной торговли Google Analytics:
https://developers.google.com/analytics/devguides/collection/analyticsjs/enhanced-ecommerce#product-data
Рабочий пример
https://developers.google.com/tag-manager/enhanced-ecommerce#purchases
Как уже говорилось, в моей модели это поле имеет вид product
, но Google нужно, чтобы оно было названо name
, вместо
возможно ли изменить его в представлении?Или мне нужно как-то изменить его в HTML, используя Javascript?
view
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'))
order_items = serialize('json', order_items, fields=['id', 'sku', 'product', 'price', 'size', 'quantity'])
response = render(request, 'thanks_deposit_payment.html', dict(order_number=order_number, total=total,
order_items=order_items, costo_despacho=costo_despacho))
return response
template:
<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: ''
},
products: JSON.parse('{{ order_items | safe }}')
},
}
});
</script>
models.py
class OrderItem(models.Model):
order = models.ForeignKey(Order, on_delete=models.CASCADE)
product = models.CharField(max_length= 200)
sku = models.CharField(max_length=20)
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)
ОБНОВЛЕНИЕ 1
Благодаря ответу ruddra я получаю «product» поменять на «name»', но dataLayer показывает:
Uncaught SyntaxError: missing ) after argument list
products: JSON.parse('[{'sku': 'M1', 'quantity': '10', 'size': 'varios', 'price': '3.00', 'name': 'Sobre con muestras'}]')
Это произойдет только в том случае, если я изменю представление с ответом на это предложение.