Как я могу отобразить атрибут родительского объекта в Django Admin?

В данный момент я работаю над приложением для электронной коммерции.

В нем содержится подприложение под названием "блог". Идея заключается в том, что суперпользователь создает учетную запись для *Trainer. И да, я уже создал нового AbstractUser

Тренер входит в свою учетную запись и создает пост Я вошел сюда, используя учетные данные тренера

Я хочу, чтобы суперпользователь видел, КТО создал пост, но DjangoAdmin показывает мне email администратора

Как я могу отобразить email "создателя" поста в админке Django?

Код:

#models.py
class UserTrainer(AbstractUser):
    email = models.EmailField(verbose_name='email', max_length=100, unique=True)
    age = models.PositiveIntegerField(null=True)
    info = RichTextField(blank=True, null=True)
    image = models.ImageField(upload_to='media/stuff_images')
    inst = models.URLField(blank=True)
    REQUIRED_FIELDS = ['email', ]

def __str__(self):
    return self.email

def get_email(self):
    return self.object.email

class Post(models.Model): DEFAULT_TRAINER_ID = 1

article = models.CharField(max_length=50, default='Article text')
slug = models.SlugField(max_length=30)
keywords = models.CharField(max_length=100)
text = RichTextField(blank=True, null=True)
trainer = models.ForeignKey(UserTrainer, on_delete=models.CASCADE, null=False, default=1)

def __str__(self):
    return self.article

class Meta:
    verbose_name = 'Post'
    verbose_name_plural = 'Posts'

#admin.py
class CustomUserAdmin(UserAdmin):
    model = UserTrainer
    add_form = CustomUserCreationForm
    fieldsets = (
        *UserAdmin.fieldsets,
        (
            'TrainerInfo',
            {
                'fields': (
                    'age', 'info', 'image', 'inst',
                )
            }
        )
    )
admin.site.register(UserTrainer, CustomUserAdmin)
@admin.register(Post)
class PostAdmin(admin.ModelAdmin):
    list_display = ('article', 'slug','trainer')
    list_display_links = ('article',)
    fields = ('article', 'slug', 'keywords', 'text',)
    readonly_fields = ('trainer',)

Проблема в том, что вы не указываете пользователя при сохранении сообщения, поэтому вам следует переопределить метод сохранения в admin.py, попробуйте это (OFFICIAL DOCS):

admin.site.register(UserTrainer, CustomUserAdmin)
@admin.register(Post)
class PostAdmin(admin.ModelAdmin):
    list_display = ('article', 'slug','trainer')
    list_display_links = ('article',)
    fields = ('article', 'slug', 'keywords', 'text',)
    readonly_fields = ('trainer',)

    def save_model(self, request, obj, form, change):
        obj.trainer = request.user
        super().save_model(request, obj, form, change)
Вернуться на верх