У меня проблема с зарегистрированными пользователями и Django ModelForm
. У меня есть класс с именем _Animal_
, который имеет от ForeignKey
до User
и некоторые данные, относящиеся к животному типа возраста, расы и т.д.
Пользователь может добавить Животные в db, и мне нужно отслеживать автора каждого животного, поэтому мне нужно добавить request.user, который регистрируется, когда пользователь создает экземпляр для животных.
models.py
class Animal(models.Model):
name = models.CharField(max_length=300)
age = models.PositiveSmallIntegerField()
race = models.ForeignKey(Race)
...
publisher = models.ForeignKey(User)
def __unicode__(self):
return self.name
class AnimalForm(ModelForm):
class Meta:
model = Animal
Основная цель - скрыть поле издателя в форме и отправить зарегистрированного пользователя при нажатии кнопки сохранения.
Я могу поймать текущего пользователя в представлении с помощью initial
, но то, что я также хочу, не отображает поле.
views.py
@login_required
def new_animal(request):
if request.method == "POST":
form = AnimalForm(request.POST)
if form.is_valid():
form.save()
return redirect('/')
else:
variables = RequestContext(request, {'form': form})
return render_to_response('web/animal_form.html', variables)
else:
form = AnimalForm(initial={'publisher': request.user})
variables = RequestContext(request, {'form': form})
return render_to_response('web/animal_form.html', variables)