Я отображаю список, отображающий следующие поля в 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]
Итак, когда я возвратил ModelName2.email_verified
, он показывает <django.db.models.query_utils.DeferredAttribute object at 0x7efcca3b9910>
в интерфейсе администратора через ModelAdmin.
Итак, я пробовал следующее:
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
Итак, как я могу это сделать.
Я хочу отобразить значение email_verified
в ModalAdmin (интерфейс администратора) в таблице с соответствующим именем пользователя и другими полями.
например. Что я хочу -
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