如何根据在django中创建的组的数量来计算top_topics ?



我有这样的模型,其中主题与房间相关,如代码所示。我如何计算top_topics,因为我已经计算了top_groups。我想根据在该主题上创建的组的数量来计算top_topics。我希望你明白我的意思。

Models.py

class Topic(models.Model):
name = models.CharField(max_length=100)
def __str__(self):
return self.name
class Room(models.Model):
admin = models.ForeignKey(User, on_delete=models.SET_NULL, null=True)
topic = models.ForeignKey(Topic, on_delete=models.SET_NULL, null=True)
group_photo = models.ImageField(null=True, upload_to = 'images/', default='avatar.svg')
name = models.CharField(unique=True, max_length=100)
description = models.TextField(null=True, blank=True)
members = models.ManyToManyField(User, related_name='members', blank=True)
created = models.DateTimeField(auto_now_add=True)
class Meta: 
ordering = ['-created']
def __str__(self):
return self.name

Views.py

def home(request):
q = request.GET.get('q') if request.GET.get('q') != None else ''
groups = Room.objects.filter(Q(topic__name__icontains=q)|
Q(name__icontains=q) |
Q(description__icontains=q)
)
top_groups = Room.objects.alias(
num_members = Count('members')
).order_by('-num_members')[:5]
group_count = groups.count()

topics = Topic.objects.all()[:5]
context = {'groups':groups, 'group_count':group_count, 'topics':topics, 'top_groups':top_groups}
return render(request, 'base/home.html', context)

我在感情上基本上很困惑。我怎样才能从Topic访问Room ?请帮忙!!!!

您应该能够通过以下方式直接访问与每个主题相关的组的计数:

topic.room_set.count()

这是单独访问每个主题的情况。如果您想把它放到查询集上,那么使用annotate()Count()

最新更新