Un'opzione consisterebbe nell'utilizzare Geopy per cercare l'indirizzo su qualcuno come Yahoo o Google Maps, che restituirà quindi l'indirizzo completo di quello (i) con cui lo abbinano. Potrebbe essere necessario controllare che i numeri degli appartamenti vengano troncati nell'indirizzo restituito (ad es. "221 Amsterdam Av # 330" che diventa "221 AMSTERDAM AVENUE"). Inoltre, riceverai anche le informazioni sulla città/stato/paese, che l'utente potrebbe avere anche abbreviato o errato.
Nel caso in cui vi siano più corrispondenze, è possibile chiedere all'utente un feedback su quale sia il loro indirizzo. In caso di assenza di corrispondenze, puoi anche far sapere all'utente, e possibilmente consentire comunque il salvataggio dell'indirizzo, a seconda dell'importanza di un indirizzo valido, e quanta fiducia hai messo nella validità dell'indirizzo-ricerca-fornitori.
Riguardo fare questo normalizzazione nella forma rispetto al modello, non so che cosa il preferito Django-modo di fare le cose è, ma la mia preferenza è nella forma, ad esempio:
def clean(self):
# check address via some self-defined helper function
matches = my_helper_address_matcher(address, city, state, zip)
if not matches:
raise forms.ValidationError("Your address couldn't be found...")
elif len(matches) > 1:
# add javascript into error so the user can select
# the address that matches? maybe there is a cleaner way to do this
raise forms.ValidationError('Did you mean...')
È potrebbe gettare questa funzione di ricerca nel modello (o qualche file helpers.py) nel caso in cui si desidera riutilizzarla in altre aree
fonte
2011-01-29 18:41:34
Per quale paese/paesi? – payne
Ci dispiace: USA. Specificamente NYC. –