Я только что подумал, что ModelAdmin.add_view использует request.GET для установки начального значения в строке 900 django / contrib / admin / options.py.
Таким образом, чтобы предварительно заполнить поле «name» формы добавления someapp.somemodel с помощью «bar», просто откройте: / admin / someapp / somemodel / add /? Name = bar
Теперь, если вам нужно похожее поведение в форме изменений, переопределите метод get_object следующим образом:
def get_object(self, request, object_id):
obj = super(YourModelAdmin, self).get_object(request, object_id)
for key, value in request.GET.items():
setattr(obj, key, value)
return obj
Теперь откройте / admin / someapp / somemodel / 1 /? Name = bar, и поле "name" будет иметь значение "bar" в форме.
Это проверено взломать .