Модель зарегистрировать сохранить созданного пользователя django admin
Я использую django admin, и у меня есть модель, в которой есть свойство created_user. Проблема в том, что я не знаю, как зарегистрировать пользователя из админки django. Кто-нибудь знает, как это сделать?
в разделе On Admin Site вы должны увидеть автоматически добавленные ModeAdmins
для Users
и Groups
в Users
ModelAdmin
вы можете создавать новые User
.
Для регистрации пользователя, выполнившего создание/обновление модели в админке django, переопределите метод save_model в представлении админки.
Предположим, что рассматриваемая модель - это SomeRandomModel, определенная следующим образом
#in models.py
from django.db import models
from django.conf import settings
class SomeRandomModel(models.Model):
some_field = models.CharField(max_length=200)
another_field = models.CharField(max_length=200)
created_user = models.ForeignKey(
settings.AUTH_USER_MODEL,
blank=True, null=True,
related_name="%(app_label)s_%(class)s_created_by_set",
editable=False,
on_delete=models.PROTECT)
updated_user = models.ForeignKey(
settings.AUTH_USER_MODEL,
blank=True, null=True,
related_name="%(app_label)s_%(class)s_updated_by_set",
editable=False,
on_delete=models.PROTECT
)
Чтобы связать created_user и updated_user на SomeRandomModel с текущим вошедшим пользователем, когда выполняется CRUD в Django admin, переопределите метод save_model в admin.py следующим образом:
#admin.py
from models import SomeRandomModel
from django.contrib import admin
@admin.register(SomeRandomModel)
class SomeRandomModelAdmin(admin.ModelAdmin):
def save_model(self, request, obj, form, change):
if not obj.pk:
obj.created_user = request.user #user who created the object should only be set once
obj.updated_user = request.user #user that last updated the object can be set on each save
super().save_model(request, obj, form, change)
Ссылка: Как связать модель с текущим пользователем при сохранении?