Доступ к атрибутам формы в пользовательском типе поля формы в Django - PullRequest
1 голос
/ 05 мая 2011

У меня есть форма, которая содержит поле иностранного ключа (Место). Я настроил это поле для использования настраиваемого типа поля формы на основе 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'

Меня это не удивляет, но я не уверен, как передать данные формы в мое настраиваемое поле. Есть идеи?

1 Ответ

0 голосов
/ 05 мая 2011

Эта логика не относится к области - она ​​принадлежит форме, в частности, к методу clean формы.

...