Обновите атрибут для всех пользователей в профиле 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)