0
0 комментариев

Не пойму в чём проблема, укажите на мои ошибки пожалуйста, если это возможно.

models:

class Profile(models.Model):
    user = models.OneToOneField(settings.AUTH_USER_MODEL)
    following = models.ManyToManyField(User, related_name='following',
                                       symmetrical=False, blank=True)

templates:

    {% with total_followers=view_user.profile.following.count %}
      <a href="#" data-id="{{ id }}" data-action="{% if request.user not in view_user.profile.following.all %}un{% endif %}follow" class="btn btn-default follow button">
        {% if request.user not in view_user.profile.following.all %}
          Follow
        {% else %}
          Unfollow
        {% endif %}</a>
    {% endwith %}

самое страшное и пока не очень понятное местами скорее всего тут ошибка:

$('a.').click(function(e){
    e.preventDefault();
    $.post('{% url "accounts:user_follow" %}',
        {id: $(this).data('id'),
            action: $(this).data('action')},
        function(data){
            if (data['status'] == 'ok')
            {
                var previous_action = $('a.follow').data('action');
 
                $('a.follow').data('action', previous_action == 'follow' ? 'unfollow' : 'follow');
                $('a.follow').text(previous_action == 'follow' ? 'Unfollow' : 'Follow');
 
                var previous_followers = parseInt($('span.count .total').text());
                $('span.count .total').text(previous_action == 'follow' ? previous_followers + 1 : previous_followers - 1);
            }
    });
});

вот он должен сработать после вышеуказанного js, но может и тут ошибся, так как не работает views:

@ajax_required
@login_required
@require_POST
def user_follow(request):
    user_id = request.POST.get('id')
    action = request.POST.get('action')
    if user_id and action:
        try:
            view_user = User.objects.get(id=user_id)
            user = User.objects.get(id=request.user)
            if action == 'follow':
                user.profile.following.add(view_user)
            else:
                user.profile.following.remove(view_user)
            return JsonResponse({'status':'ok'})
        except User.DoesNotExist:
            return JsonResponse({'status':'ko'})
    return JsonResponse({'status':'ko'})


Добавить комментарий