我的一个模型中有一个方法,现在可以获取每个链接,然后进行随机抽样。是否有可能使用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 )
答案 0 :(得分:2)
你可以得到一堆像这样的随机链接:
links = self.lists.all().order_by('?')[self.number_of_links]
但是...不会过滤您想要的列表。你或许能够做到这一点:filter(list_set__id__in=...)
答案 1 :(得分:1)