Отображение поля из другой модели в 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')

попробуйте это

надеюсь, что он будет отображаться

Вернуться на верх