0
여기서 내가 원하는 것은 두 테이블을 결합하고, 값을 Post 테이블에서과 같이 증가시키고, 현재 사용자, PostId, has_liked = True
이있는 UserLikes 테이블에 다른 행을 추가하는 것입니다. 또한 현재 사용자가 이미 현재 게시물을 좋아하는지 여부를 확인 하시겠습니까? 아래는 제 코드입니다.Django에서 두 테이블을 조인하는 쿼리를 작성하는 방법은 무엇입니까?
models.py
class Posts(models.Model):
title = models.CharField("Title", max_length=140)
url = models.FileField("URL")
likes = models.IntegerField("Likes", default=0)
by = models.ForeignKey(User)
date = models.DateTimeField(auto_now_add=True)
def __str__(self):
return self.title + ' by ' + str(self.by)
class UserLikes(models.Model):
post = models.ForeignKey(Posts)
user = models.ForeignKey(User)
has_liked = models.BooleanField("Liked", default=False)
def __str__(self):
return str(self.post) + ' by ' + str(self.user)
views.py
def like(request, pk):
if request.POST :
post = get_object_or_404(Posts, pk=pk)
print(request.user)
obj = UserLikes.objects.filter(post_id__in=post.id, user=request.user)
try:
if obj.has_liked is not True:
obj.post_id = post.id
obj.user = request.user
obj.has_liked = True
obj.save()
post.likes = str(int(post.likes) + 1)
post.save()
except AttributeError:
return HttpResponse(post.likes)
else:
return HttpResponse(post.likes, {'like': 'disabled'})
urls.py
url(r'^(?P<pk>\d+)/like/$', views.like, name='likes'),
그래서, 무엇을 것 쿼리는 views.py 파일에 있습니까?
@ Sayse,하지만 이해할 수없는 것은 각 사용자를 한 번만 좋아하고 'UserLikes' 테이블에 저장하는 방법을 이해하는 것입니다. 또한 인덱스 페이지를 열 때 쿼리를 어떻게 검색 할 것인가? – CapJ
@CapJ 'UserLikes' 모델에서 사용자 당, 게시물 당 하나만 원하면'unique_together = ('post ','user ')'를 설정하십시오 : https://docs.djangoproject.com/en/1.10/ref/models/options/# unique-together –
나를 도왔던 @elkubo에게 감사드립니다. – CapJ