У меня есть форма, которая содержит поле иностранного ключа (Место). Я настроил это поле для использования настраиваемого типа поля формы на основе CharField вместо ModelChoiceField, поскольку я хочу, чтобы пользователи могли использовать автозаполнение ввода текста. Автозаполнение работает, и если существует экземпляр модели с иностранными ключами, у меня нет проблем. Тем не менее, если этот экземпляр Place не существует, я хочу, чтобы пользователь мог ввести адрес улицы, город, штат и почтовый индекс и использовать их для создания нового Place с помощью get_or_create в моем типе настраиваемого поля. Мой код выглядит так:
class PlaceAutoCompleteField(forms.CharField):
def clean(self, value):
super(PlaceAutoCompleteField, self).clean(value)
place, created = Place.objects.get_or_create(name=value,
defaults={'street': self.form.cleaned_data['street'],
'town': self.form.cleaned_data['city'],
'state': self.form.cleaned_data['state'],
'zipcode': self.form.cleaned_data['zipcode']})
return place
class EventForm(forms.ModelForm):
place = PlaceAutoCompleteField()
street = forms.CharField(max_length=50)
city = forms.CharField(max_length=40)
state = USStateField()
zipcode = USZipCodeField()
class Meta:
model = Event
fields = (.....)
Я получаю сообщение об ошибке: объект 'PlaceAutoCompleteField' не имеет атрибута 'form'
Меня это не удивляет, но я не уверен, как передать данные формы в мое настраиваемое поле. Есть идеи?