Files
ai_web/backend/apps/users/migrations/0005_add_user_id.py
ddrwode fc0679b199 haha
2026-02-02 13:48:11 +08:00

49 lines
1.4 KiB
Python
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# Generated manually for user_id (shareable ID for friend/product search)
import secrets
import string
from django.db import migrations, models
def generate_user_id_for_user(User):
alphabet = string.ascii_lowercase + string.digits
for _ in range(10):
candidate = "U" + "".join(secrets.choice(alphabet) for _ in range(8))
if not User.objects.filter(user_id=candidate).exists():
return candidate
return "U" + secrets.token_hex(4)
def populate_user_id(apps, schema_editor):
User = apps.get_model("users", "User")
for user in User.objects.filter(user_id__isnull=True).iterator():
user.user_id = generate_user_id_for_user(User)
user.save(update_fields=["user_id"])
def noop(apps, schema_editor):
pass
class Migration(migrations.Migration):
dependencies = [
("users", "0004_rename_friendreq_receiver_status_idx_friend_requ_receive_383c2c_idx_and_more"),
]
operations = [
migrations.AddField(
model_name="user",
name="user_id",
field=models.CharField(
blank=True,
help_text="可分享的用户ID用于好友搜索、商品搜索等",
max_length=16,
null=True,
unique=True,
verbose_name="用户ID",
),
),
migrations.RunPython(populate_user_id, noop),
]