我有一个简单的Employee
模型,其中包括firstname
, lastname
和middlename
领域。
在管理方面,可能在其他地方,我想显示为:
lastname, firstname middlename
对我而言,执行此操作的逻辑位置是在模型中通过创建一个这样的计算字段:
from django.db import models
from django.contrib import admin
class Employee(models.Model):
lastname = models.CharField("Last", max_length=64)
firstname = models.CharField("First", max_length=64)
middlename = models.CharField("Middle", max_length=64)
clocknumber = models.CharField(max_length=16)
name = ''.join(
[lastname.value_to_string(),
',',
firstname.value_to_string(),
' ',
middlename.value_to_string()])
class Meta:
ordering = ['lastname','firstname', 'middlename']
class EmployeeAdmin(admin.ModelAdmin):
list_display = ('clocknumber','name')
fieldsets = [("Name", {"fields":(("lastname", "firstname", "middlename"), "clocknumber")}),
]
admin.site.register(Employee, EmployeeAdmin)
最终,我认为我需要以字符串形式获取名称字段的值。我得到的错误是value_to_string() takes exactly 2 arguments (1 given)
。字符串所需的值self, obj
。我不知道这obj
是什么意思。
一定有一种简单的方法可以做到这一点,我敢肯定我不是第一个想要这样做的人。
编辑:下面是我的代码修改为丹尼尔的答案。我得到的错误是:
django.core.exceptions.ImproperlyConfigured: EmployeeAdmin.list_display[1], 'name' is not a callable or an attribute of 'EmployeeAdmin' of found in the model 'Employee'.
from django.db import models
from django.contrib import admin
class Employee(models.Model):
lastname = models.CharField("Last", max_length=64)
firstname = models.CharField("First", max_length=64)
middlename = models.CharField("Middle", max_length=64)
clocknumber = models.CharField(max_length=16)
@property
def name(self):
return ''.join(
[self.lastname,' ,', self.firstname, ' ', self.middlename])
class Meta:
ordering = ['lastname','firstname', 'middlename']
class EmployeeAdmin(admin.ModelAdmin):
list_display = ('clocknumber','name')
fieldsets = [("Name", {"fields":(("lastname", "firstname", "middlename"), "clocknumber")}),
]
admin.site.register(Employee, EmployeeAdmin)
好的… Daniel Roseman的答案似乎应该起作用。与往常一样, 在发布问题之后 ,您会找到所需的内容。
从Django
1.5文档中,
我发现了可以立即使用的示例。感谢大家的帮助。
这是起作用的代码:
from django.db import models
from django.contrib import admin
class Employee(models.Model):
lastname = models.CharField("Last", max_length=64)
firstname = models.CharField("First", max_length=64)
middlename = models.CharField("Middle", max_length=64)
clocknumber = models.CharField(max_length=16)
def _get_full_name(self):
"Returns the person's full name."
return '%s, %s %s' % (self.lastname, self.firstname, self.middlename)
full_name = property(_get_full_name)
class Meta:
ordering = ['lastname','firstname', 'middlename']
class EmployeeAdmin(admin.ModelAdmin):
list_display = ('clocknumber','full_name')
fieldsets = [("Name", {"fields":(("lastname", "firstname", "middlename"), "clocknumber")}),
]
admin.site.register(Employee, EmployeeAdmin)
我有一个控制器,它有这样一个查询: 一篇文章有许多评论,而一篇评论属于一篇文章。comments模型有一个id、comment、tag字段。 我想做的是,对于像这样的任何查询,模型都会返回字段id、注释、标记和tag_translated,后者只是使用朗外观对标记的翻译。 我可以通过在控制器上使用for来解决这个问题,它迭代$注释并添加字段,但是我必须为每个需要tag_translared字段的控
我用的是Django 2。十、 我有一个用于验证请求的序列化程序。(不是ModelSerializer) 是对模型的引用。 我希望用户在字段中传递数据库id,但在验证后,got被转换为对象。 我试图重写方法,并将对象分配给字段,但它给出了错误
问题内容: 我在任何地方都找不到它,所以您的帮助对我非常有用:)这是该字段: FragmentCategory: 这是发送的表格: 我尝试过这样的事情: categories = fragmentCategory.objects.get(id=1), 要么: 问题答案: Django文档的整个页面都专门针对此内容,并从内容页面进行了索引。 如该页面所述,你需要执行以下操作: 要么
我试图找到一种方法,在JPQL查询中放置一个计算字段,以映射到Spring Boot中的实体。 我刚才的例子列出了一个静态数字,但我打算将来也将其用于聚合。 我在尝试运行查询时不断收到以下消息: “类[Ljava.lang.Object;不能强制转换为类com.School([Ljava.lang.Object;位于加载器“bootstrap”的模块java.base中;com.School位于加
本文向大家介绍silverstripe 将字段添加到DataObject,包括了silverstripe 将字段添加到DataObject的使用技巧和注意事项,需要的朋友参考一下 示例 您可以使用该DataExtension机制将额外的数据库字段添加到现有的DataObject中: 并应用扩展名: 这将HairColour作为字段添加到Member对象。
问题内容: 在Django中,我具有以下代码,该代码在HTML页面上创建用户名和密码表单: 我想在该字段中添加“用户名”和“密码”占位符文本,然后在用户单击该字段时消失。实现此目标的最佳方法是什么? 问题答案: 您必须使用占位符属性 要么