Size: a a a

Django [ru] #STAY HOME

2019 December 18

W

Worlak2 in Django [ru] #STAY HOME
Andrey
Покажи модели и что хочешь получить
Опишу проще. У нас есть таблица
Client()
Token =charfield()

User()
Token=foreignkey(client)
Name=charfield()

В этой таблице данные
Токен имя
1234 Василий
1235 Игорь
1234 Дмитрий
1235 Дмитрий


Вот нам надо получить имя Дмитрий в этом случае

В идеале еще и токены с кем пересекся
источник

А

Алексей in Django [ru] #STAY HOME
Worlak2
Опишу проще. У нас есть таблица
Client()
Token =charfield()

User()
Token=foreignkey(client)
Name=charfield()

В этой таблице данные
Токен имя
1234 Василий
1235 Игорь
1234 Дмитрий
1235 Дмитрий


Вот нам надо получить имя Дмитрий в этом случае

В идеале еще и токены с кем пересекся
Token = ForeignKey('Client', to_field='Token')
источник

W

Worlak2 in Django [ru] #STAY HOME
Алексей
Token = ForeignKey('Client', to_field='Token')
Так и сделано, это для абстрактного представления, чтобы понять саму задачу
источник

А

Алексей in Django [ru] #STAY HOME
Client()
Token =charfield(а вот тут лучше сделать индексируемым скорее всего)
источник

W

Worlak2 in Django [ru] #STAY HOME
Алексей
Client()
Token =charfield(а вот тут лучше сделать индексируемым скорее всего)
С базой все нормально, тут выборке интересна
источник

А

Алексей in Django [ru] #STAY HOME
Worlak2
стыдно такое миру показывать, думаю что можно на коллекции переделать, но пока надо другие вещи доделать. Вот что в итоге получилось

pre_result = []
for num, i in enumerate(test):
   for j in test[num:]:
       if i['name'] == j['name'] and i['token'] != j['token']:
           name_first = models.Client.objects.filter(
               token=i['token']).get().name if models.Client.objects.filter(
               token=i['token']).get().name else models.Info.objects.filter(token=i['token']).first().name
           name_second = models.Client.objects.filter(
               token=j['token']).get().name if models.Client.objects.filter(
               token=j['token']).get().name else models.Info.objects.filter(token=j['token']).first().name
           pre_result.append({'name_first': name_first, 'name_second': name_second, 'name_client': i['name']})
токен уникальное поле?
источник

W

Worlak2 in Django [ru] #STAY HOME
Алексей
токен уникальное поле?
Да. Все как на модели
источник

А

Алексей in Django [ru] #STAY HOME
Worlak2
Да. Все как на модели
я же ее не вижу, ладно, тогда иначе, откуда токен берется, там есть связь и с Клиентом, и с Инфо?
источник

W

Worlak2 in Django [ru] #STAY HOME
Инфо, вам не нужно, это уже отдельно под задачу. Вас интересует только клиент и юзер
источник

А

Алексей in Django [ru] #STAY HOME
Worlak2
Инфо, вам не нужно, это уже отдельно под задачу. Вас интересует только клиент и юзер
1) даже вот такое у тебя, раз поле уникальное и не нужно бояться мультивыборки, надо делать не через get, а через filter().first(), чтобы 2 раза не дергать, а так у тебя исключение сработает при таком гете, еси не найдет
2) как это не нужно, если его дергает в случае ненахождения в Клиенте?
источник

VB

Vladyslav Babych in Django [ru] #STAY HOME
У меня есть по умолчанию 3 группы пользователей(юзеры, редакторы, админы). Все могут публиковать посты, но посты обычных юзеров отправляются на проверку админам которые могут отклонить/принять. Всеми группами и правами премодерации постов нужно управлять в админке(давать группам права на публикации, на проверки) перемещать юзеров между группами
источник

А

Алексей in Django [ru] #STAY HOME
а так надо знать все на самом деле, чтобы выстроить нормальный annotate с выборкой, по которой потом делать Case, сейчас голова кругом, но я бы так сделал, погляди Case
источник

А

Алексей in Django [ru] #STAY HOME
и вот тогда уже не придется ни циклом, ни дергать 2 таблицы по очереди, и еще глянь Subquery обязательно, скорее всего тоже пригодится
источник

DN

Denis Nikolaev in Django [ru] #STAY HOME
Всем привет! Подскажите пожалуйста, у меня есть такой код, https://codeshare.io/24LBwb.  Скажите пожалуйста, каким образом вернуть не только of_inventory, но и to_inventory
источник

W

Worlak2 in Django [ru] #STAY HOME
Алексей
1) даже вот такое у тебя, раз поле уникальное и не нужно бояться мультивыборки, надо делать не через get, а через filter().first(), чтобы 2 раза не дергать, а так у тебя исключение сработает при таком гете, еси не найдет
2) как это не нужно, если его дергает в случае ненахождения в Клиенте?
Вы не туда смотрите, то уже идёт отдельная выборка под найденные. Не смотрите на код который я скинул, смотрите. На модель. Необходимо найти пересечения, что пользователь с одним именем, найден у нескольких клиентов, в этом основная задачк
источник

W

Worlak2 in Django [ru] #STAY HOME
Алексей
и вот тогда уже не придется ни циклом, ни дергать 2 таблицы по очереди, и еще глянь Subquery обязательно, скорее всего тоже пригодится
Идея в том, что может быть 1000 клиентов и у них в свою очередь 10 миллионов пользователей
источник

tv

tsar vcube in Django [ru] #STAY HOME
есть возможность в uwsgi когда я закидаю обновления,  не килять uwsgi чтобы изминения вступили в силу?
источник

А

Алексей in Django [ru] #STAY HOME
Worlak2
Вы не туда смотрите, то уже идёт отдельная выборка под найденные. Не смотрите на код который я скинул, смотрите. На модель. Необходимо найти пересечения, что пользователь с одним именем, найден у нескольких клиентов, в этом основная задачк
т.е. берем тех пользователей, у которых колличество клиентов больше 1, а дальше что?
источник

W

Worlak2 in Django [ru] #STAY HOME
Алексей
т.е. берем тех пользователей, у которых колличество клиентов больше 1, а дальше что?
Наоборот,  берём всех клиентов и получаем всех уникальных пользователей. Смотрим что пользователь с одним и тем же именем есть у нескольких клиентов, отдаём их
источник

W

Worlak2 in Django [ru] #STAY HOME
В идеале отдаём значения токенов у кого встретили и имя пользователя
источник