Форум сайта python.su
Первый queryset qset01 содержит следущую информацию
country_1, 100 country_2, 200 country_3, 300
country_1, 111 country_2, 222 country_3, 333
country_1, 101 country_2, 202 country_3, 303
country_1, 100, 111, 101 country_2, 200, 222, 202 country_3, 300, 333, 303
Отредактировано gtlhbkkj (Март 28, 2020 14:45:19)
Офлайн
Что за queryset, откуда взялся, какой тип - хрен его знает, вероятно это все несущественная информация.
gtlhbkkj
Скажите пожалуйста, у меня есть овощи в холодильнике, их лучше варить или жарить? А еще, у меня дома живет питомец, каким кормом его лучше кормить? А еще есть две бабы, одна Лена, а другая Катя, как думаете, какая красивее?
Офлайн
это функция из view.py c querysetom
в цикле меняется вот этот параметр iteration_result и получается несколько кверисетов с одинаковой структурой и разными данными. То есть первый столбик кверисета это обозначение страны, второй столбик это название страны (у всех кверисетов эти два столбика идентичны) и третий столбик меняется - там цифры - у каждого кверисета эти цифры разные.
def function(request): iteration_result = "i_01" qset1 = BigTable.objects.values( 'deb_nr_f__dcountry__wcode_f__code', 'deb_nr_f__dcountry__wcode_f__code_name', ).annotate( tmp_code=F('deb_nr_f__dcountry__wcode_f__code'), tmp_descr=F('deb_nr_f__dcountry__wcode_f__code_name') ).values('tmp_code','tmp_descr' ).order_by('-abs_2016__sum' ).annotate( abs_2016__sum=Sum('abs_2016'), ).filter(id_nr_f__ie_code__unomer_f__nomer=iteration_result, )
class BigTable(models.Model): deb_nr_f = models.ForeignKey(Debitor, on_delete=models.CASCADE, related_name='debitor_fnr', verbose_name='Debitor FNr', blank=True, null=True) id_nr_f = models.ForeignKey(Material, on_delete=models.CASCADE, related_name='material', verbose_name='Material', blank=True, null=True) abs_2016 = models.IntegerField('Abs. 2016', default=0) abs_2017 = models.IntegerField('Abs. 2017', default=0) abs_2018 = models.IntegerField('Abs. 2018', default=0) abs_2019 = models.IntegerField('Abs. 2019', default=0) abs_2020 = models.IntegerField('Abs. 2020', default=0)
Отредактировано gtlhbkkj (Март 28, 2020 15:30:23)
Офлайн
gtlhbkkj
1) Вы понимаете, что кроме Джанги есть еще 100500 фреймворков? Понятия queryset и view не ассоциируются строго с Джангой. У нас есть специальный топик посвещенный Джанге, если вы пишите в неспециализированный форум, пожалуйста, пишите подробно о чем идет речь, не заставляйте людей догадываться о ваших проблемах.
2)
gtlhbkkjну и зачем тогда этот цикл? Сначала вы фильтруете в цикле, а потом объединяете выборки. Так не фильтруйте, не надо будет объединять.
в цикле меняется вот этот параметр iteration_result и получается несколько кверисетов с одинаковой структурой и разными данными.
Офлайн
FishHook
ну и зачем тогда этот цикл?
def function(request): #iteration_result = "i_01" qs = AnotherTable.objects.all() qset1 = BigTable.objects.values( 'deb_nr_f__dcountry__wcode_f__code', 'deb_nr_f__dcountry__wcode_f__code_name', ).annotate( tmp_code=F('deb_nr_f__dcountry__wcode_f__code'), tmp_descr=F('deb_nr_f__dcountry__wcode_f__code_name') ).values('tmp_code','tmp_descr' ).order_by('-abs_2016__sum' ).annotate( abs_2016__sum=Sum('abs_2016'), ).filter(id_nr_f__ie_code__unomer_f__nomer=[q.code for q in qs], )
Отредактировано gtlhbkkj (Март 28, 2020 16:13:46)
Офлайн
gtlhbkkj
Я вас не понимаю. Возможно я вашу задачу не очень понимаю. Давайте возьмем пример проще. Допустим, у меня есть такая таблица - список населения для городов
| id | city_id | population |
for city_id in (1, 2, 3): population = Population.objects.filter(city_id=city_id)
population = Population.objects.filter(city_id__in=(1, 2, 3))
Офлайн
FishHook
и не надо будет ничего объединять
).filter(id_nr_f__ie_code__unomer_f__nomer=("i_01"),
).filter(id_nr_f__ie_code__unomer_f__nomer=("i_01", "i_02"),
Офлайн
gtlhbkkj
внимательно посмотрите на пример, который я дал и вы увидите один маленький нюанс
Офлайн
FishHookясно, благодарю вас за ваше время. Это не совсем то.
gtlhbkkj
внимательно посмотрите на пример, который я дал и вы увидите один маленький нюанс
country_1, 100, 111, 101
country_2, 200, 222, 202
country_3, 300, 333, 303
Отредактировано gtlhbkkj (Март 28, 2020 17:20:48)
Офлайн
gtlhbkkj
превратите ваш квери в список, словарь или какую-либо другую структуру и объединяйте их как угодно
Офлайн