使用Django模型对连接进行采样

时间:2011-04-20 22:46:02

标签: django django-models

我的一个模型中有一个方法,现在可以获取每个链接,然后进行随机抽样。是否有可能使用Django模型进行某种形式的连接和随机选择?当数据增长时,当前的方法似乎是浪费磨损应用程序停止的好方法。 :)

class Link(models.Model):
    link = models.URLField()
    in_list = models.ForeignKey( 'linkrotator.LinkList',
                                 related_name = 'links' )


class LinkList(models.Model):
    in_list = models.ForeignKey('linkrotator.LinkListList',
                            blank = True,
                            null = True,
                            on_delete=models.SET_NULL,
                            related_name = 'lists')

class LinkListList(models.Model):
    number_of_links = models.IntegerField()
    def get_links(self):
        links = []
        for list in self.lists.all():
            links.extend( list.links.all() )
        if len( links ) <= self.number_of_links:
            return links
        return random.sample( links, self.number_of_links )

2 个答案:

答案 0 :(得分:2)

你可以得到一堆像这样的随机链接:

links = self.lists.all().order_by('?')[self.number_of_links]

但是...不会过滤您想要的列表。你或许能够做到这一点:filter(list_set__id__in=...)

答案 1 :(得分:1)