У меня есть метод в одной из моих моделей, который прямо сейчас извлекает каждую ссылку, а затем делает случайную выборку. Возможно ли сделать какую-либо форму соединения в сочетании со случайным выбором с использованием моделей 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
@chromano - Я захватываю ссылки из подмножества списков. Я обновил код с помощью большего количества моделей. –