2
의 목록을 얻으려는 중 에 얼마나 많은 attendees
이 있는지 확인하려고합니다.Django에서 '가장 인기있는'목록 가져 오기
모델
class Event(models.Model):
heading = models.CharField(max_length=200)
sub_heading = models.CharField(max_length=200, null=True, blank=True)
url = models.CharField(max_length=200, null=True, blank=True)
description = models.TextField()
tags = models.ManyToManyField(Tag, null=True, blank=True)
date = models.DateTimeField()
created = models.DateTimeField(auto_now_add=True)
modified = models.DateTimeField(auto_now=True)
def attendees(self):
return Attendee.objects.filter(event=self)
class Attendee(models.Model):
event = models.ForeignKey(Event)
content_type = models.ForeignKey(ContentType, related_name='event_attendee')
object_id = models.PositiveIntegerField()
profile = generic.GenericForeignKey('content_type', 'object_id')
조회수
def event(request, id):
...
events = Events.objects.all()
attendees = Attendee.objects.filter(event__in=events).count()
if attendees > 50:
popular_events = Event.objects.filter(what should i filter by).annotate(attendees_count=Count('attendees')).order_by('-attendee_count') ???
# I'm probably going about this the wrong way :\
나는이에 대한 통찰력을 주셔서 감사합니다 정말 것입니다. 내가하고있는 일은 효과가 없다. 인기있는 이벤트를 어떻게 조회합니까?
크리스는 정답이있다. Attendee 모델의'ForeignKey' 필드에'related_name' 키워드 인자를 지정하여 커스텀'attendees' 모델 메소드를 생성하는 것을 피할 수 있습니다 : https://docs.djangoproject.com/en/dev/topics/db/models/# inheritance-and-reverse-relations – twaddington
기술적으로'event_instance.attendee_set.all()'과 같은 것을 사용한다면 기술적으로 그렇게 할 필요는 없다.하지만 네가 원하면 '참석자들 '이라면'related_name'으로 지정할 필요가 있습니다. 그러면 OP는'event_instance.attendees.all()'을 사용할 수 있습니다. –