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?