Обновите атрибут для всех пользователей в профиле Django

У меня есть модель:

class GenerateCertificate(models.Model):

    username = models.OneToOneField(User, on_delete=models.CASCADE)
    cert_name = models.CharField(
        max_length=15,
        default='',
        blank=True,
        editable=False)
    cert_password = models.CharField(
        max_length=20,
        default='',
        blank=True,
        editable=False)
    key_name = models.CharField(
        max_length=15,
        default='',
        blank=True,
        editable=False)

    def __unicode__(self):
        return unicode(self.username)

Я хочу обновить атрибуты cert_name, cert_password а также key_name и установить значение '' во всех этих атрибутах. Это легко сделать для одного пользователя с помощью следующего:

def DeleteUserData(self, request, queryset):
    for qs in queryset:
        username = str(qs.username)
        #get user data from database
        user = GenerateCertificate.objects.get(username__username=username)
        keyname = user.key_name
        certname = user.cert_name

        GenerateCertificate.objects.filter(username__username=username).update(
            cert_name='')
        GenerateCertificate.objects.filter(username__username=username).update(
            cert_password='')
        GenerateCertificate.objects.filter(username__username=username).update(
            key_name='')

но как сделать это для всех пользователей в базе данных, все сразу?

Я использую Django 2.0.6 и Python 3.5

1 ответ

Решение

Вы можете обновить все объекты GenerateCertificate модель сразу

data_dict = {'cert_name': '', 'cert_password': '', 'key_name': ''}
GenerateCertificate.objects.all().update(**data_dict)
Другие вопросы по тегам