Я использую Django с PostgreSQL, и я хочу знать, есть ли способ обновить определенное количество моделей, имеющих уникальные поля, случайными значениями.
Моя проблема Мне нужно обновить 5 тысяч пользователей, меняя его адреса электронной почты и имена пользователей случайными значениями. Эти поля уникальны, что означает, что два экземпляра не могут иметь одинаковые значения. Моя логика c такова: для каждого пользователя (1) генерировать случайную строку электронной почты, затем, если с таким адресом нет ни одного пользователя, используйте эту строку, иначе вернитесь к 1
# Python2.7 Django 1.11, but everything helps
from django.contrib.auth.models import User
from django.utils.crypto import get_random_string
for user in User.objects.order_by('-pk')[:5000].iterator():
# Generate random email
while True:
random_email = get_random_string(10)
if not User.objects.filter(email=random_email).exists():
user.email = random_email
break
# Generate random username
while True:
random_username = get_random_string(10)
if not User.objects.filter(username=random_username).exists():
user.username = random_username
break
user.save()