首页 > 解决方案 > 更新配置文件 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_namecert_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

标签: djangodjango-modelsdjango-admin

解决方案


GenerateCertificate您可以一次更新模型的所有对象

data_dict = {'cert_name': '', 'cert_password': '', 'key_name': ''}
GenerateCertificate.objects.all().update(**data_dict)

推荐阅读