0
와 필터링 된 외래 키를 검색합니다내가 세 가지 주요 모델, 사진, 장소 및 PlaceRating이 장고
class Picture(models.Model):
file = ImageField(max_length=500, upload_to="images")
user = models.ForeignKey(User, null=True, related_name="userpictures")
place = models.ForeignKey(Place, null=True, related_name='pictures')
class PlaceRating(models.Model):
place = models.ForeignKey(Place, null=True, related_name="placeratings")
user = models.ForeignKey(User, null=True, related_name="userratings")
rating = models.DecimalField(null=True, max_digits=4, decimal_places=1)
class Place(models.Model):
name = CharField(max_length=50)
내가 함께 장소의 이미지, 사용자에 의해 주어진 장소의 등급을 표시하고 싶지만, 그럴 수 없어 내가 ForeignKey를 필터링해야하고 Django가 그것을 허용하지 않는 것처럼 그렇게 할 수 있습니다.
내가하고 싶은 것이 예 :
보기 :
pictures = Picture.objects.filter(user=request.user)
템플릿 :
{% for picture in pictures %}
<img src="{{ picture.file.url }}" class="bigpicture">
{{ picture.place.placeratings.0.rating|user:picture.user }}
{% endfor %}
내용
, 나는, templatetags 함께 할 관리하지만, 이것은 내가 가져올 수없는 많은 다른 쿼리를 데이터베이스에 생성합니다. :
{% for picture in pictures %}
<img src="{{ picture.file.url }}">
{% getplaceratingrelatedtopic picture.place.id picture.user.id %}
{% endfor %}
그리고 :
내가 파이썬 2.7/장고 1.9와 함께 작동@register.simple_tag
def getplaceratingrelatedtopic(placeid, userid):
print(placeid)
theplace = Place.objects.get(id=placeid)
user = User.objects.get(id=userid)
placerating = PlaceRating.objects.filter(author=user, place=place).last()
if rating:
return placerating.rating
else:
return ""
.
단서가 있습니까? 고마워요!
솔루션을 제공해 주셔서 감사합니다. 그러나 이것은 사용자가 게시 한 평점에만 등급을 필터링하지 않습니다. 나는 다음과 같은 것을 필요로 할 것이다. @property def rating (self) : return self.placeratings.filter (user = request.user) [0] .rating 장고가 받아들이지 않는. –