У меня есть набор форм, который я пытаюсь сохранить, и я хотел бы, чтобы вновь созданная форма была автоматически назначена пользователю (request.user). В моих моделях Meta class я добавил это:
forms.py
class Meta:
model = Timesheet
# fields = "__all__"
exclude = ("user", )
, а затем в views.py
class TimesheetCreateView(View):
object = None
def post(self, request, *args, **kwargs):
form = TimesheetModelForm(request.POST)
if form.is_valid():
self.object = form.save(commit=False)
self.object.user = request.user
self.object.save()
success_url = reverse("timesheets:current-week", args=(self.object.year, self.object.week))
else:
# Warning: Silent form error
print(form.errors)
success_url = reverse("timesheets:default-current-week")
return HttpResponseRedirect(success_url)
Это работает нормально, однако - если Я теперь go в админ-панели - выпадающее поле для пользователя (внешний ключ) также исчезло. Есть ли показать все поля в админке, но автоматически использовать request.user в шаблоне? Я попытался использовать fields = "__all"
и использовать те же логи c в моем файле views.py, но я получаю сообщение об ошибке формы, кричащее «требуется пользователь» - я не хочу, чтобы у пользователя было выпадающее меню, показывающее все доступные пользователи.
Если я добавлю это в forms.py
def __init__(self, user, *args, **kwargs):
super(TimesheetModelForm, self).__init__(*args, **kwargs)
self.fields['user'].queryset = User.objects.filter(id=user.id) # show logged in user in dropdown
В раскрывающемся списке правильно отображается зарегистрированный пользователь, но теперь я не могу получить доступ к панели администратора