【发布时间】:2018-12-03 22:28:54
【问题描述】:
我是在 Django ModelAdmin 中显示以下字段的列表。
list_display = ['username', 'email_verified', 'cert_password', 'key_name']
在此列表中,项目 - username, cert_password and key_name 属于一个模型 ModelName,项目 email_verified 属于另一个模型 ModelName2。
但我想在ModelAdmin 中将它们全部显示给管理员,因此我创建了一个函数 def email_verified,如下所示:
class UserAdmin(admin.ModelAdmin):
list_display = ['username', 'email_verified', 'cert_password', 'key_name']
def email_verified(self):
return ModelName2.email_verified
actions = [my_action_here]
所以,当我通过 ModelAdmin 返回ModelName2.email_verified 时,它在管理界面中显示<django.db.models.query_utils.DeferredAttribute object at 0x7efcca3b9910>。
所以,我尝试了以下方法:
class UserAdmin(admin.ModelAdmin):
list_display = ['username', 'email_verified', 'cert_password', 'key_name']
def email_verified(self,obj):
return ModalName2.objects.get().email_verified
actions = [my_action_here]
但在这种情况下我得到了错误 - get() returned more than one ModalName2
那么,我该怎么做呢。
我想在表格中的 ModalAdmin(管理界面)中显示 email_verified 的值以及相应的用户名和其他字段。
例如。我想要什么-
Username | Email_Verified | cert_password | Key_name
abcuser | 1 | asdf | asdf
bhdjs | 1 | lkj | ljk
asdff | 0 | lkjsd | ljl
这是我的模式 -
class ModelName2(models.Model):
username = models.OneToOneField(User, on_delete=models.CASCADE)
email_verified = models.BooleanField(
default=False,
help_text="Valid - <b><a>True</a></b> OR <b><a>False</a></b>")
def __unicode__(self):
return unicode(self.username)
class ModelName1(models.Model):
username = models.OneToOneField(User, on_delete=models.CASCADE)
cert_password = models.CharField(
max_length=20,
default='',
blank=True,
help_text="<b><a>System Generated - Do not alter</a></b>")
key_name = models.CharField(
max_length=15,
default='',
blank=True,
help_text="<b><a>System Generated - Do not alter</a></b>")
def __unicode__(self):
return unicode(self.username)
怎么做?我正在使用 Django 1.11.X
【问题讨论】:
-
ModelName和ModelName2是否相互关联?您能否发布模型以使您的探针更清晰? -
ModalName2.objects.get()get() 的过滤器 -
模型添加@neverwalkaloner
-
return ModalName2.objects.get(username=obj.username).email_verified
标签: python django django-models django-admin django-admin-actions