【发布时间】:2018-04-18 14:28:20
【问题描述】:
我想在 Django 管理模型的下拉列表中更改项目(用户)的名称。我想在不改变基本模型的情况下做到这一点。
我只想通过用户名(只是没有名字和姓氏)在Worker模型(office.py)中字段'user'(admin.py)引用'user'
admin.py
from .models import Token
class TokenAdmin(admin.ModelAdmin):
model = Token
fieldsets = (
(None, {
'fields': ('name', 'key', 'user')
}),
models.py
from office.models import Worker
class Token(models.Model):
user = models.ForeignKey(
Worker,
related_name='auth_token',
verbose_name=_("api.models.token.user")
)
office.py
class Worker(models.Model):
user = models.OneToOneField(settings.AUTH_USER_MODEL, verbose_name=_("User"))
firstname = models.CharField(
_("Firstname"), blank=False, null=False, max_length=50)
lastname = models.CharField(
_("Lastname"), blank=False, null=False, max_length=50)
def __str__(self):
return "%s %s" % (self.lastname, self.firstname)
【问题讨论】:
-
可以改成
Worker.__str__方法返回self.user.username。 -
我说过,我不想改变模型中的任何想法,因为它会影响代码的另一部分。
标签: django django-models foreign-keys django-admin django-modeladmin