Если вы хотите скрыть поле владельца в администраторе, то исключите поле владельца из администратора модели и установите владельца в методе save_model
.
class PackageAdmin(admin.ModelAdmin):
exclude = ('owner',)
def save_model(self, request, obj, form, change):
if not change:
# only set owner when object is first created
obj.owner = request.user
obj.save()
Если вы хотите сохранить поле владельца формы, а затем переопределить get_changeform_initial_data
и добавить владельца в качестве начального значения.
class PackageAdmin(admin.ModelAdmin):
def get_changeform_initial_data(self, request):
return {'owner': request.user}
В приведенном выше коде предполагается, что владелец является иностранным ключом к пользовательской модели, который я рекомендую. Если вы действительно хотите сохранить имя пользователя в виде строки, вам необходимо изменить приведенные выше строки:
obj.owner = request.user.username
return {'owner': request.user.username}
Это слишком расплывчато. Как добавляется «Пакет»? Через форму? Через администратора? –
Нам нужна дополнительная информация по нескольким пунктам: (1.) где вы его создаете (как сказал Шан Ванг)? (2.) Какой пользователь? Другая твоя модель? Подкласс 'auth.User'? Пользовательская модель стороннего пакета? –
Возможный дубликат [В Django, как узнать зарегистрированного пользователя?] (Http://stackoverflow.com/questions/1477319/in-django-how-do-i-know-the-currently-logged -in-user) –