Обновить все записи Django Orm - PullRequest
0 голосов
/ 06 февраля 2019

Я хочу обновить is_active до True, который находится внутри User Модель (таблица авторизации), чья user_company равна 5.Есть много пользователей, имеющих идентичные идентификаторы компании

class UserProfile(models.Model):
    user = models.OneToOneField(User, on_delete=models.CASCADE)
    user_company = models.ForeignKey(Company, on_delete=models.CASCADE)
    user_role = models.ForeignKey(ACLRoles, on_delete=models.CASCADE)
    user_dob = models.DateField(null=True, blank=True)
    user_phone = models.CharField(max_length=30, blank=True, null=True)
    user_image = models.ImageField(upload_to='user_profiles/', default='default_user.png',blank=True, null=True)
    user_created = models.DateTimeField(auto_now_add=True)
    user_is_deleted = models.BooleanField(default=False)
    user_deleted_at = models.DateTimeField(blank=True, null=True)

Ответы [ 3 ]

0 голосов
/ 06 февраля 2019

Вы можете использовать update() метод в наборе запросов:

UserProfile.objects.filter(user_company_id=5).update(user_is_deleted=True)
0 голосов
/ 06 февраля 2019

Учитывая, что вам нужно выполнить один раз:

  1. Первый в типе cmd:

    python manage.py shell
    

    откроет оболочку python для ввода сценария python.

  2. Теперь в типе оболочки:

    >>> from appropriate.place import User  // import the auth User model from wherever it is in your project
    >>> users_to_activate = User.objects.filter(userprofile__user_company_id=5).update(is_active=True)
    
0 голосов
/ 06 февраля 2019

Простой:

UserProfile.objects.filter(user_company__pk=5).update(user_is_deleted=True)
...