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?

Respuestas a la pregunta(5)

Su respuesta a la pregunta