Size: a a a

Django [ru] #STAY HOME

2019 May 07

DT

Dan Tyan in Django [ru] #STAY HOME
Rinat SHCHerba
        for stream in streams:
           for raschasovka in stream.stream_raschasovka.all():
               if not raschasovka.added:
                      "вот тут .bulk_update() мне не поможет обновить данные в переменной streams"
записей много ?
источник

RS

Rinat SHCHerba in Django [ru] #STAY HOME
Очень
источник

DB

Dima Boger in Django [ru] #STAY HOME
а какого типа обновление?
источник

DT

Dan Tyan in Django [ru] #STAY HOME
ну тогда собирай streaь в список
и после первого цикла применяй
источник

DB

Dima Boger in Django [ru] #STAY HOME
Raschasovka.objects.filter(stream__in=streams, added=False).update(...) не поможет?
источник

EM

Eugene Maltsev in Django [ru] #STAY HOME
raschasovka 🤔🤔🤔
источник

RS

Rinat SHCHerba in Django [ru] #STAY HOME
Eugene Maltsev
raschasovka 🤔🤔🤔
согласен, не спорю
источник

DB

Dima Boger in Django [ru] #STAY HOME
Dima Boger
Raschasovka.objects.filter(stream__in=streams, added=False).update(...) не поможет?
или там расчитываемое для каждой расчасовки (извините)?
источник

DB

Dima Boger in Django [ru] #STAY HOME
Если даже так, то ничего зашкварного нет, но надо обернуть в transaction.atomic, как мне кажется
источник

RS

Rinat SHCHerba in Django [ru] #STAY HOME
Dima Boger
Raschasovka.objects.filter(stream__in=streams, added=False).update(...) не поможет?
Он вернёт мне один queryset который не будет меняться
источник

DB

Dima Boger in Django [ru] #STAY HOME
Rinat SHCHerba
        for stream in streams:
           for raschasovka in stream.stream_raschasovka.all():
               if not raschasovka.added:
                      "вот тут .bulk_update() мне не поможет обновить данные в переменной streams"
Можешь чуть раскрыть задачу тогда — какого типа изменение ты делаешь над моделью/кверисетом?
источник

ОС

Олег Сергеев in Django [ru] #STAY HOME
class Raschasovka(models.Model):
   avtor =
   imya =
   pomogite =
источник

RS

Rinat SHCHerba in Django [ru] #STAY HOME
Rinat SHCHerba
Он вернёт мне один queryset который не будет меняться
Но даже еще не проитерированные данные в нем могут поменяться(.added=True) и это не учтется и цикл будет со старыми данными
источник

DB

Dima Boger in Django [ru] #STAY HOME
тогда лучше и правда вытащить сначала всё в память, потом всё обработать, и только потом всё послать в базу
источник

DB

Dima Boger in Django [ru] #STAY HOME
ну и стоит задуматься точно ли всё ты делаешь так и выбрана ли правильная тактика
источник

RS

Rinat SHCHerba in Django [ru] #STAY HOME
Олег Сергеев
class Raschasovka(models.Model):
   avtor =
   imya =
   pomogite =
class Raschasovka(models.Model):
   department = models.ForeignKey(Department, related_name='raschasovka_department', on_delete=models.CASCADE)
   group = models.ForeignKey(Group, related_name="group_raschasovka", on_delete=models.CASCADE)
   stream = models.ForeignKey(Stream, related_name='stream_raschasovka', on_delete=models.CASCADE)
   teacher = models.ForeignKey(Teacher, related_name='teacher_raschasovka', on_delete=models.CASCADE)
   subject = models.ForeignKey(Subject, related_name='subject_raschasovka', on_delete=models.CASCADE)
   subject_type = models.ForeignKey(SubjectType, related_name='subject_type_raschasovka', on_delete=models.CASCADE)
   auditorium_prefer = models.ForeignKey(Auditorium, related_name='auditorium_prefer_reschasovka', on_delete=models.CASCADE, null = True)
   hours = models.IntegerField(default=0)
   added = models.BooleanField(default=False)
   course_number = models.IntegerField(default=1)
источник

RS

Rinat SHCHerba in Django [ru] #STAY HOME
К слову, это генерация расписания
источник

RS

Rinat SHCHerba in Django [ru] #STAY HOME
При подборе дня недели и времени создается расписание для предмета для целого потока групп и в расчасовке будет меняться данные
источник

DB

Dima Boger in Django [ru] #STAY HOME
Не очень понимаю причём здесь база данных — это чистая задача из дискретной математики на распределение ресурсов
источник

DB

Dima Boger in Django [ru] #STAY HOME
Достал из базы всё что тебе нужно, посчитал всё что нужно, одной транзакцией изменения залил обратно
источник