Использование request.user с Django ModelForm

У меня проблема с зарегистрированными пользователями и Django ModelForm . У меня есть класс с именем _Animal_ , который имеет ForeignKey для пользователя и некоторые данные, относящиеся к животному, такие как возраст, раса и т. Д.

Пользователь может добавлять животных в базу данных, а у меня есть чтобы отследить автора каждого животного, поэтому мне нужно добавьте 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)
18
задан zaidfazil 7 June 2017 в 08:39
поделиться