feat: 中文化 django-admin 字段标签 (T-603)
This commit is contained in:
+3
-3
@@ -40,7 +40,7 @@ class WalletAdjustmentForm(forms.Form):
|
||||
@admin.register(User)
|
||||
class UserAdmin(DjangoUserAdmin):
|
||||
fieldsets = DjangoUserAdmin.fieldsets + (
|
||||
("Cmhub", {"fields": ("payment_user_id", "status", "created_at")}),
|
||||
("业务信息", {"fields": ("payment_user_id", "status", "created_at")}),
|
||||
)
|
||||
readonly_fields = ("created_at",)
|
||||
list_display = (
|
||||
@@ -58,7 +58,7 @@ class UserAdmin(DjangoUserAdmin):
|
||||
def get_queryset(self, request):
|
||||
return super().get_queryset(request).select_related("wallet")
|
||||
|
||||
@admin.display(description="points")
|
||||
@admin.display(description="点数余额")
|
||||
def wallet_points_balance(self, obj):
|
||||
wallet = getattr(obj, "wallet", None)
|
||||
return wallet.points_balance if wallet else 0
|
||||
@@ -191,7 +191,7 @@ class ApiKeyAdmin(admin.ModelAdmin):
|
||||
)
|
||||
ordering = ("-created_at", "-id")
|
||||
|
||||
@admin.display(description="key hash")
|
||||
@admin.display(description="Key 哈希")
|
||||
def key_hash_masked(self, obj):
|
||||
if not obj.key_hash:
|
||||
return ""
|
||||
|
||||
@@ -0,0 +1,95 @@
|
||||
# Generated by Django 5.2.15 on 2026-07-04 08:02
|
||||
|
||||
import django.db.models.deletion
|
||||
from django.conf import settings
|
||||
from django.db import migrations, models
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('users', '0004_alter_apikey_options_alter_user_options_and_more'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.AlterField(
|
||||
model_name='apikey',
|
||||
name='created_at',
|
||||
field=models.DateTimeField(auto_now_add=True, verbose_name='创建时间'),
|
||||
),
|
||||
migrations.AlterField(
|
||||
model_name='apikey',
|
||||
name='key_hash',
|
||||
field=models.CharField(editable=False, max_length=64, unique=True, verbose_name='API Key 哈希'),
|
||||
),
|
||||
migrations.AlterField(
|
||||
model_name='apikey',
|
||||
name='key_prefix',
|
||||
field=models.CharField(editable=False, max_length=32, verbose_name='Key 前缀'),
|
||||
),
|
||||
migrations.AlterField(
|
||||
model_name='apikey',
|
||||
name='last_used_at',
|
||||
field=models.DateTimeField(blank=True, null=True, verbose_name='最后使用时间'),
|
||||
),
|
||||
migrations.AlterField(
|
||||
model_name='apikey',
|
||||
name='name',
|
||||
field=models.CharField(blank=True, max_length=80, verbose_name='名称'),
|
||||
),
|
||||
migrations.AlterField(
|
||||
model_name='apikey',
|
||||
name='status',
|
||||
field=models.CharField(choices=[('active', '有效'), ('revoked', '已吊销')], default='active', max_length=20, verbose_name='状态'),
|
||||
),
|
||||
migrations.AlterField(
|
||||
model_name='apikey',
|
||||
name='updated_at',
|
||||
field=models.DateTimeField(auto_now=True, verbose_name='更新时间'),
|
||||
),
|
||||
migrations.AlterField(
|
||||
model_name='apikey',
|
||||
name='user',
|
||||
field=models.ForeignKey(on_delete=django.db.models.deletion.PROTECT, related_name='api_keys', to=settings.AUTH_USER_MODEL, verbose_name='用户'),
|
||||
),
|
||||
migrations.AlterField(
|
||||
model_name='user',
|
||||
name='created_at',
|
||||
field=models.DateTimeField(auto_now_add=True, verbose_name='创建时间'),
|
||||
),
|
||||
migrations.AlterField(
|
||||
model_name='user',
|
||||
name='email',
|
||||
field=models.EmailField(max_length=254, unique=True, verbose_name='邮箱'),
|
||||
),
|
||||
migrations.AlterField(
|
||||
model_name='user',
|
||||
name='payment_user_id',
|
||||
field=models.CharField(blank=True, help_text='外部支付系统用户标识,可为空。', max_length=128, verbose_name='支付系统用户 ID'),
|
||||
),
|
||||
migrations.AlterField(
|
||||
model_name='user',
|
||||
name='status',
|
||||
field=models.CharField(choices=[('active', '正常'), ('disabled', '禁用')], default='active', max_length=20, verbose_name='状态'),
|
||||
),
|
||||
migrations.AlterField(
|
||||
model_name='userwallet',
|
||||
name='created_at',
|
||||
field=models.DateTimeField(auto_now_add=True, verbose_name='创建时间'),
|
||||
),
|
||||
migrations.AlterField(
|
||||
model_name='userwallet',
|
||||
name='points_balance',
|
||||
field=models.BigIntegerField(default=0, verbose_name='点数余额'),
|
||||
),
|
||||
migrations.AlterField(
|
||||
model_name='userwallet',
|
||||
name='updated_at',
|
||||
field=models.DateTimeField(auto_now=True, verbose_name='更新时间'),
|
||||
),
|
||||
migrations.AlterField(
|
||||
model_name='userwallet',
|
||||
name='user',
|
||||
field=models.OneToOneField(on_delete=django.db.models.deletion.PROTECT, related_name='wallet', to=settings.AUTH_USER_MODEL, verbose_name='用户'),
|
||||
),
|
||||
]
|
||||
+21
-16
@@ -12,21 +12,23 @@ from django.db.models import Q
|
||||
|
||||
class User(AbstractUser):
|
||||
class Status(models.TextChoices):
|
||||
ACTIVE = "active", "Active"
|
||||
DISABLED = "disabled", "Disabled"
|
||||
ACTIVE = "active", "正常"
|
||||
DISABLED = "disabled", "禁用"
|
||||
|
||||
email = models.EmailField("email address", unique=True)
|
||||
email = models.EmailField("邮箱", unique=True)
|
||||
payment_user_id = models.CharField(
|
||||
"支付系统用户 ID",
|
||||
max_length=128,
|
||||
blank=True,
|
||||
help_text="External payment system user identifier, if available.",
|
||||
help_text="外部支付系统用户标识,可为空。",
|
||||
)
|
||||
status = models.CharField(
|
||||
"状态",
|
||||
max_length=20,
|
||||
choices=Status.choices,
|
||||
default=Status.ACTIVE,
|
||||
)
|
||||
created_at = models.DateTimeField(auto_now_add=True)
|
||||
created_at = models.DateTimeField("创建时间", auto_now_add=True)
|
||||
|
||||
@property
|
||||
def is_business_active(self) -> bool:
|
||||
@@ -41,12 +43,13 @@ class User(AbstractUser):
|
||||
class UserWallet(models.Model):
|
||||
user = models.OneToOneField(
|
||||
settings.AUTH_USER_MODEL,
|
||||
verbose_name="用户",
|
||||
on_delete=models.PROTECT,
|
||||
related_name="wallet",
|
||||
)
|
||||
points_balance = models.BigIntegerField(default=0)
|
||||
created_at = models.DateTimeField(auto_now_add=True)
|
||||
updated_at = models.DateTimeField(auto_now=True)
|
||||
points_balance = models.BigIntegerField("点数余额", default=0)
|
||||
created_at = models.DateTimeField("创建时间", auto_now_add=True)
|
||||
updated_at = models.DateTimeField("更新时间", auto_now=True)
|
||||
|
||||
class Meta:
|
||||
db_table = "user_wallet"
|
||||
@@ -68,25 +71,27 @@ class ApiKey(models.Model):
|
||||
KEY_PREFIX_LENGTH = 16
|
||||
|
||||
class Status(models.TextChoices):
|
||||
ACTIVE = "active", "Active"
|
||||
REVOKED = "revoked", "Revoked"
|
||||
ACTIVE = "active", "有效"
|
||||
REVOKED = "revoked", "已吊销"
|
||||
|
||||
user = models.ForeignKey(
|
||||
settings.AUTH_USER_MODEL,
|
||||
verbose_name="用户",
|
||||
on_delete=models.PROTECT,
|
||||
related_name="api_keys",
|
||||
)
|
||||
name = models.CharField(max_length=80, blank=True)
|
||||
key_hash = models.CharField(max_length=64, unique=True, editable=False)
|
||||
key_prefix = models.CharField(max_length=32, editable=False)
|
||||
name = models.CharField("名称", max_length=80, blank=True)
|
||||
key_hash = models.CharField("API Key 哈希", max_length=64, unique=True, editable=False)
|
||||
key_prefix = models.CharField("Key 前缀", max_length=32, editable=False)
|
||||
status = models.CharField(
|
||||
"状态",
|
||||
max_length=20,
|
||||
choices=Status.choices,
|
||||
default=Status.ACTIVE,
|
||||
)
|
||||
last_used_at = models.DateTimeField(null=True, blank=True)
|
||||
created_at = models.DateTimeField(auto_now_add=True)
|
||||
updated_at = models.DateTimeField(auto_now=True)
|
||||
last_used_at = models.DateTimeField("最后使用时间", null=True, blank=True)
|
||||
created_at = models.DateTimeField("创建时间", auto_now_add=True)
|
||||
updated_at = models.DateTimeField("更新时间", auto_now=True)
|
||||
|
||||
class Meta:
|
||||
db_table = "api_key"
|
||||
|
||||
Reference in New Issue
Block a user