В общем дошел до дома, подробнее напишу. Если у тебя определено поле для юзера в модели, то ты его можешь вообще вручную выбрать, а если лень это делать то можно так.
Допустим у тебя есть приложение для публикации статей "articles", в
articles/models.py есть модель статьи, в которой есть поле с пользователем который ее добавил, можно добавить еще одно поле для пользователя который ее последний раз редактировал, а можно и не добавлять если нужен только пользователь добавивший статью:
# остальные импорты опущены
from django.conf import settings
class Article(models.Model):
...
added_by = models.ForeignKey(settings.AUTH_USER_MODEL, blank=True, null=True,
related_name="articles_added")
last_edited_by = models.ForeignKey(settings.AUTH_USER_MODEL, blank=True, null=True,
related_name="articles_edited")
...
Так как два поля ссылаются на одну модель, нужно определить для них
related_name чтобы потом с помощью него можно было работать с ORM, типо чтобы получить все статьи добавленные пользователем:
*объект_нужного_пользователя*.articles_added.all()
Потом в файле
articles/admin.py определяешь новую модель для "администратирования" этого объекта:
from django.contrib import admin
from .models import Article
class ArticleAdmin(admin.ModelAdmin):
readonly_fields = ("last_edited_by",) # делаем полем рид онли, чтобы нельзя было его отредактировать
def save_model(self, request, obj, form, change):
if change: # True если изменяется уже существующий объект, False если добавляется новый
# определяем и записываем пользователя если изменяется существующий объект
obj.last_edited_by = request.user
else:
# определяем и записываем пользователя если добавляется новый объект
obj.added_by = request.user
super(ArticleAdmin, self).save_model(request, obj, form, change)
admin.site.register(Article, ArticleAdmin)
Все, пробуй. Если не нужен юзер редактировавший статью, то, надеюсь, разберешься что удалить надо?
Подробнее о
save_model():
https://docs.djangoproject.com/en/1.10/ref/contrib...
Подробнее о
request:
https://docs.djangoproject.com/en/1.10/ref/request...