2013-02-23 4 views
1

Я работаю с устаревшей базой данных, где есть все поля «adduid» и «moduid» во всех таблицах. Эти поля являются varchar (64).Добавление текущего имени пользователя в поле пользователя в модели Django

Эти штампы регистрируются с использованием userid при сохранении и изменении. Конечно, при использовании django эти поля заполняются пользователем django db.

Что бы я хотел, это способ заполнения этих полей зарегистрированным пользователем; предпочтительно в определении модели.

Как бы я это сделал? (Большинство решений, которые я видел, полагаются на использование внешнего ключа в таблице User, однако нам нужен фактический текст имени пользователя в этом поле, а не fk).

заранее спасибо - Патрик

ответ

1

Я не думаю, что вы можете сделать это на уровне модели как пользователь не доступно, чтобы сохранить метод а модель. Модель может быть сохранена без какого-либо участия пользователя (например, с помощью приложения управления задачами, такого как сельдерей). Однако пользователь доступен на объекте HttpRequest, переданном в представление, поэтому вы можете сделать это в представлении.

def your_view(request): 
    # get your object 
    obj.modified = request.user.username 
    obj.save() 

Там также save_model функция на Джанго ModelAdmin, что вы можете переопределить. Что-то вроде -

def save_model(self, request, obj, form, change): 
    obj.modified = request.user.username 
    obj.save() 
Смежные вопросы