У меня проблема с зарегистрированными пользователями и Django ModelForm
. У меня есть класс с именем _Animal_
, который имеет от ForeignKey
до User
и некоторые данные, связанные с животным, такие как возраст, раса и т. Д.
Пользователь может добавлять животных в базу данных, и мне нужно отслеживать автора каждого животного, поэтому мне нужно добавить 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)