Django Forms: clave externa en campo oculto
Mi formulario:
class PlanForm(forms.ModelForm):
owner = forms.ModelChoiceField(label="",
queryset=Profile.objects.all(),
widget=forms.HiddenInput())
etc...
class Meta:
model = Plan
Owner, en el modelo, es una clave foránea para un perfil.
Cuando configuro este formulario, configuro el valor de "propietario" para que sea un objeto de perfil.
Pero cuando esto aparece en el formulario, parece contener elnombr del perfil así:
<input type="hidden" name="owner" value="phil" id="id_owner" />
Cuando se envía el formulario y vuelve a mi views.py, trato de manejarlo así:
form = PlanForm(request.POST)
...
if form.is_valid():
plan = form.save()
return HttpResponseRedirect('/plans/%s'%plan.id) # Redirect after POST
in embargo, lo que obtengo es un error de conversión de tipo, ya que no puede convertir la cadena "phil" (el nombre del usuario que se guardó en el campo "propietario") en un Int para convertirlo en ForeignKey.
Entonces, qué está pasando aquí. ¿Debería un ModelForm representar una clave foránea como un número y manejarla de forma transparente? ¿O necesito extraer la identificación yo mismo en el campo del propietario del formulario? Y si es así, ¿cómo y cuándo lo mapeo ANTES de intentar validar el formulario?