0
我們有自定義的用戶模型,每個實例都有多個興趣點。如何加快django queryset的排序?
這裏是興趣模型:
class Interest(models.Model):
name = models.CharField(max_length=50, unique=True)
users = models.ManyToManyField(settings.AUTH_USER_MODEL,
related_name="interests", blank=True)
當用戶將頁面,我們建議用誰擁有最常見的利益相對該用戶的其他人聯繫。
對於用戶生成列表,我們使用:用戶模式
def suggested_people(user):
queryset = User.objects.custom_filter(is_verified=True).exclude(pk=user.pk).order_by('-date_joined').select_related()
users_sorted = sorted(queryset, key=lambda x: x.get_common_interest(user).count(), reverse=True)
return users_sorted
方法:
def get_common_interest(self, user):
""" Return a list of string with the interests and the total number remaining """
your_interests = user.interests.values_list('pk', flat=True)
return self.interests.filter(pk__in=your_interests)
但有這個列表是非常緩慢排序(問題1000個用戶約8秒)。有可能以某種方式簡化或加快排序? 將不勝感激的任何建議!
太棒了!非常感謝! – aphex