我在我的模型之一中有一個方法,它現在獲取每個鏈接,然後執行一個隨機樣本。是否有可能使用Django模型進行某種形式的連接和隨機選擇?當前的方法似乎是一種很好的浪費方式,可以在數據增長時將應用程序暫停。 :)使用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)
爲什麼你需要遍歷所有列表?你不能只獲取所有有關聯的鏈接?就像'links = Link.objects.filter(list__isnull = False)' – Carlos 2011-04-21 00:07:03
@chromano - 我從鏈表中獲取鏈接。我用更多的模型更新了代碼。 – 2011-04-21 00:28:36