Моя форма:
class PlanForm(forms.ModelForm):
owner = forms.ModelChoiceField(label="",
queryset=Profile.objects.all(),
widget=forms.HiddenInput())
etc...
class Meta:
model = Plan
Владелец в модели - это ForeignKey для профиля.
Когда я устанавливаю эту форму, я устанавливаю значение «owner» в качестве объекта Profile.
Но когда это появляется в форме, кажется, что оно содержит имя профиля, например:
<input type="hidden" name="owner" value="phil" id="id_owner" />
Когда форма отправляется и возвращается к моим views.py, я пытаюсь обработать ее следующим образом:
form = PlanForm(request.POST)
...
if form.is_valid():
plan = form.save()
return HttpResponseRedirect('/plans/%s'%plan.id) # Redirect after POST
Тем не менее, я получаю ошибку преобразования типа, поскольку не удается преобразовать строку «phil» (имя пользователя, которое было сохранено в поле «owner») в Int, чтобы превратить ее в ForeignKey.
Так что здесь происходит? Должна ли ModelForm представлять внешний ключ как число и прозрачно обрабатывать его? Или мне нужно извлечь идентификатор самостоятельно в поле владельца формы? И если да, то как и когда я могу отобразить его обратно, прежде чем пытаться проверить форму?