미해결
파이썬/장고 웹서비스 개발 완벽 가이드 with 리액트
ManyToManyField 데이터 불러오기
안녕하세요!
User와 Job 두 모델이 있습니다.
ManytoMany필드를 통해 Job들 중에서 User가 좋아한 Job들만을 따로 보여주고 싶습니다. 그런데 여러번 함수를 바꿔서 시도해도 데이터가 제대로 보여지지 않는 것 같아요. 어떤 부분에서 실수를 한건지 살펴주실 수 있나요?
1. Model.py
class User(models.Model): first_name = models.CharField(max_length=50) last_name = models.CharField(max_length=50) email = models.CharField(max_length=50) password = models.CharField(max_length=50) objects = UserManager()
class Job(models.Model): title = models.CharField(max_length=50) description = models.CharField(max_length=255) location = models.CharField(max_length=255) poster = models.ForeignKey(User, related_name='user_post', on_delete=models.CASCADE) created_at = models.DateTimeField(auto_now_add=True) updated_at = models.DateTimeField(auto_now=True) user_likes = models.ManyToManyField(User, related_name='liked_job') objects = JobManager()
2. view.py
def add_like(request, id): liked_job = Job.objects.get(id=id) user_liking = User.objects.get(id=request.session['id']) liked_job.user_likes.add(user_liking) return redirect('/dashboard')
3. .html
1) 좋아요 기능 구현한 부분
<tbody>{% for job in jobs %} <tr> <td>{{ job.title }}</td> <td>{{ job.location }}</td> <td><a href="view/{{ job.id }}">View</a> | <a href="like/{{ job.id }}">Add</a> | <a href="edit/{{ job.id }}">Edit</a> {% if job.poster.id == request.session.id %} |<a href="/delete/{{ job.id }}">Cancel</a> {% endif %} </td> </tr>{% endfor %}</tbody>
2) 데이터 표현 구간
{% for job in job.user_likes.all %}<tr> <td>{{ job.title }}</td> <td><a href="view/{{ job.id }}">View</a></td> <td><a href="view/{{ job.id }}">Done</td></tr>{% endfor %}