Отображение поля из другой модели в ModelAdmin модели User
Мой проект Django основан на встроенной User
модели.
Для некоторых дополнительных атрибутов я определил другую модель:
models.py:
class Status(models.Model):
email = models.ForeignKey(User, on_delete=models.CASCADE)
is_verified = models.BooleanField(default=False)
is_active = models.BooleanField(default=False)
def __str__(self):
return self.email
А вот пользовательский ModelAdmin:
admin.py:
class CustomUserAdmin(UserAdmin):
model = User
list_display = ['email']
search_fields = ['email']
Я хочу, чтобы list_display
показал мне is_verified
и is_active
поля из Status
модели, но я заблудился.
Я изучил несколько похожих вопросов на SO, таких как Display field from another model in django admin или Add field from another model Django, но ни одно из решений не применимо, потому что одна из моих моделей является встроенной в Django.
хочешь ли ты этого?
models.py
class Status(models.Model):
# email = models.ForeignKey(User, on_delete=models.CASCADE)
email = models.OneToOneField(
User,
on_delete=models.CASCADE,
related_name='status'
)
is_verified = models.BooleanField(default=False)
is_active = models.BooleanField(default=False)
def __str__(self):
return self.email
admin.py
class CustomUserAdmin(UserAdmin):
model = User
list_display = ['email', 'is_verified', 'is_active']
search_fields = ['email']
def is_verified(self, obj):
return obj.status.is_verified
def is_active(self, obj):
return obj.status.is_active
Если вы хотите применить отображаемое имя или упорядочение, пожалуйста, обратитесь к следующему источник
class CustomUserAdmin(UserAdmin):
model = User
list_display = ('email','is_verified','is_active')
search_fields = ('email')
попробуйте это
надеюсь, что он будет отображаться