Вращение пользователя внутри модели в Django
Здравствуйте, у меня есть две модели, как показано ниже:
class ShiftModel(BaseModel):
name = models.CharField(max_length=256)
class UserShiftModel(BaseModel):
user = models.OneToOneField(
"user.User", on_delete=models.CASCADE, related_name="user_shift"
)
shift = models.ForeignKey(
ShiftModel, on_delete=models.CASCADE, related_name="shift_user"
)
Теперь предположим, что у меня есть четыре смены в моем ShiftModel
:
s1, s2, s3, s4
В каждой смене у меня есть уникальные пользователи, хранящиеся в UserShiftModel
.
Например:
s1 = [u1, u2]
s2 = [u3, u4]
s3 = [u5, u6]
s4 = [u7, u8]
Теперь я хочу повернуть сдвиги в обратном направлении, то есть [u1, u2]
будет перемещен из s1
в s4
, [u7, u8]
будет перемещен из s4
в s3
и так далее.
Как я могу этого достичь?
Дела, которые я сделал до сих пор:
current_branch = organization_models.BranchModel.objects.get(
id=kwargs.get("branch_id")
)
rotating_shifts = current_branch.branch_shift.filter(
shift_type="rotating"
).prefetch_related(
Prefetch(
"shift_user",
queryset=models.UserShiftModel.objects.filter(user__is_active=True),
)
)
for i in range(len(rotating_shifts)):
shift = list(rotating_shifts)[i]
previous_shift = list(rotating_shifts)[i - 1]
for user in shift.shift_user.all():
user.shift = previous_shift
user.save()
Но вывод вышеприведенного кода выглядит следующим образом:
s1 = [u3, u4]
s2 = [u5, u6]
s3 = [u7, u8, u1, u2]
s4 = []
Я хочу вот что:
s1 = [u3, u4]
s2 = [u5, u6]
s3 = [u7, u8]
s4 = [u1, u2]
Надеюсь, я достаточно ясно выразился.
Спасибо