2016-05-19 12 views
0

Мне нужно получить данные в шаблоне.Модель ответа Django ajax

У меня есть запрос Ajax:

$(".retailer-list-img").mouseover(function() { 
    var $this = $(this); 
    var category_id = $this.attr('id'); 
    $.ajax({ 
     'url': '/shop/getfeatured/', 
     'method': 'POST', 
     'data': {'category_id': category_id,}, 
     'success': function(response){ 
      console.log(response) 
     } 
    }); 
}); 

views.py

def MerchantGetfeaturedView(request): 
    featured = Merchant.objects.filter(
     is_catalog_active=1, 
     is_active=1, 
     category_id=request.REQUEST.get('category_id'), 
     date_deleted__isnull=True 
    ).select_related('_image') 

    featured = serializers.serialize('json', featured) 

    return HttpResponse(featured, content_type="application/json") 

Но нет никакого связанного объекта "изображение"? Как сериализовать связанную модель? Спасибо.

+0

Ваш вопрос не очень ясен. Можете ли вы опубликовать отзыв о своей ошибке? –

+0

, пожалуйста, обновите вопрос, чтобы добавить модели –

+0

Я бы лично избегал использования сериализаторов для запроса AJAX, поскольку он предоставляет информацию о вашей структуре базы данных, которую конечным пользователям не нужно знать. Вы можете использовать что-то вроде 'featured = json.dumps (list (featured.values ​​('name', 'category_id', '...')))'. Кроме того, вам может потребоваться удалить подчеркивание в 'select_related (" _ image ")' – raphv

ответ

0

Во-первых, вы должны преобразовать свой объект.

result = { 'is_catalog_active': featured['is_catalog_active'] 
      'is_active': 1, 
      'category_id': int(request.REQUEST.get('category_id')), 
      'image_id' : _image.id, 
      'image_name': _image.name 
     } 

У вас может быть PyCharm, который поможет вам автоматически заполнить родственное поле модели. Случайное предположение иногда плохо, если у вас есть правильный инструмент. Кроме того, проверьте документ django для дальнейшего изучения.

Во-вторых, функция $ .ajax() не имеет обратного вызова с ошибкой, поэтому шаблон не завершен. На самом деле пользователь должен знать обратную связь на лицевой стороне. например какой тип ошибки.

Смежные вопросы