Django Forms: Chave estrangeira no campo oculto

Minha forma:

class PlanForm(forms.ModelForm):    
    owner = forms.ModelChoiceField(label="",
                                  queryset=Profile.objects.all(),
                                  widget=forms.HiddenInput())
    etc...

    class Meta:
        model = Plan

proprietário, no modelo, é uma chave estrangeira para um perfi

Quando defino este formulário, defino o valor de "owner" como um objeto Profil

Mas quando isso aparece no formulário, parece conter onom do perfil assim:

<input type="hidden" name="owner" value="phil" id="id_owner" />

Quando o formulário é enviado e volta às minhas views.py, tento lidar com isso da seguinte maneira:

    form = PlanForm(request.POST)
    ...
    if form.is_valid():                
        plan = form.save()
        return HttpResponseRedirect('/plans/%s'%plan.id) # Redirect after POST

No entanto, o que recebo é um erro de conversão de tipo, pois falha ao transformar a string "phil" (o nome do usuário que foi salvo no campo "owner") em um Int para transformá-lo na ForeignKey.

Então, o que está acontecendo aqui. Um ModelForm deve representar uma chave estrangeira como um número e manipulá-la de forma transparente? Ou preciso extrair o ID pessoalmente no campo do proprietário do formulário? E se sim, como e quando o mapeio antes de tentar validar o formulário?

questionAnswers(5)

yourAnswerToTheQuestion