2016-07-28 4 views
0

처럼 장고 + 아약스하는 데 도움이 필요하고 현재 온라인 책 등 버튼을 구현 한 - 장고와 함께 탱고 : 코딩에 나는 새로운 오전 버튼

http://www.tangowithdjango.com/book17/chapters/ajax.html#add-a-like-button

그러나 내 프로젝트를 위해 내가 기록 할 필요가

하는 사용자는 무엇을 좋아하고 또한 항목을 한 번만 좋아할 수 있음을 보장합니다 (Instagram/facebook과 유사). 나는 다른 관련 질문을 온라인에서 살펴 봤지만 다른 초보자들이 따라야 할 대답이 잘되어 있지 않다는 것을 발견했다. 누군가가 저를 도울 수있는 답을 쉽게 따라 할 수 있다면 미래에 같은 목표를 달성하려는 다른 사람들을 도울 수 있습니다.

모델

class UserProject(models.Model): 
    user = models.ForeignKey(User) 
    title = models.CharField(max_length=100) 
    date_created = models.DateTimeField(auto_now_add=True) 
    project_likes = models.IntegerField(default=0) 
    slug = models.SlugField(max_length=100, unique=True) 

전망

@login_required 
def like_project(request): 

    proj_id = None 
    if request.method == 'GET': 
     proj_id = request.GET['project_id'] 

    likes = 0 
    if proj_id: 
     proj = UserProject.objects.get(id=int(proj_id)) 
     if proj: 
      likes = proj.project_likes + 1 
      proj.project_likes = likes 
      proj.save() 

    return HttpResponse(likes) 

템플릿

<strong id="like_count">{{ project.project_likes }}</strong> likes 

      {% if user.is_authenticated %} 
        <button id="likes" data-projid="{{project.id}}" class="btn btn-danger-outline btn-sm" type="button"> <i class="fa fa-heart-o" aria-hidden="true"></i> 

        like 
        </button> 
      {% endif %} 

URL

다음과 같이

내 현재 코드는

url(r'^like_project/$', views.like_project, name='like_project'), 

아약스

$(document).ready(function() { 

$('#likes').click(function(){ 
    var projid; 
    projid = $(this).attr("data-projid"); 
    $.get('/like_project/', {project_id: projid}, function(data){ 
       $('#like_count').html(data); 
       $('#likes').hide(); 
    }); 
}); 
}); 

답변

0

당신이 두 번 같은 UserProject을 좋아 User 없는지를 확인하려면, 당신은 단순히 project_likes 분야에서 좋아하는 수를 저장할 수는 없지만, 오히려 별도의 모델을 만들어야합니다 (예 : UserLikes), ForeignKeys 내지 UserUserProject으로 표시된다. 사용자가 UserProject을 좋아했을 때 그런 다음 UserProject 모델에서 좋아요 수를 계산하는 함수를 만들 수 있습니다.

+0

감사합니다. 좋아하는 사용자를 위해 새로운 모델이 필요 하겠지만 Ajax를 변경하고이를 수용 할 수있는 방법을 이해하지 못했습니다. – ollysmall

+0

보기를 수정하여 시작하십시오. 거기에 새로운 UserLike 객체를 생성하십시오. – mhkuu

관련 문제