Tengo un problema con los usuarios registrados y un Django ModelForm
. Tengo una clase llamada _Animal_
que tiene ForeignKey
a User
y algunos datos relacionados con el animal como edad, raza, etc.Usando request.user con Django ModelForm
Un usuario puede agregar Animales a la base de datos y tengo que rastrear el autor de cada animal, así que tengo que agregar el request.user que se registra cuando el usuario crea una instancia animal.
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
El objetivo principal es ocultar el campo editorial en la forma, y presentar al usuario conectado al golpear el botón Guardar.
Puedo capturar al usuario actual en la vista usando initial
, pero lo que también quiero es no mostrar el campo.
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)
Es el 'User' una instancia de' django.contrib.auth.models'? – shailenTJ