Một tùy chọn sẽ là sử dụng Geopy để tra cứu địa chỉ trên một người như Yahoo hoặc Google Maps, sau đó sẽ trả về địa chỉ đầy đủ của một (s) mà họ khớp với địa chỉ đó. Bạn có thể phải xem số căn hộ bị cắt bớt trong địa chỉ được trả lại (ví dụ: "221 Amsterdam Av # 330" trở thành "221 AMSTERDAM AVENUE"). Ngoài ra, bạn cũng sẽ nhận được thông tin về thành phố/tiểu bang/quốc gia mà người dùng có thể đã viết tắt hoặc viết sai chính tả.
Trong trường hợp có nhiều kết quả phù hợp, bạn có thể nhắc người dùng phản hồi về địa chỉ của họ. Trong trường hợp không có kết quả phù hợp, bạn cũng có thể cho người dùng biết và có thể cho phép địa chỉ lưu, tùy thuộc vào mức độ quan trọng của địa chỉ hợp lệ và mức độ tin cậy bạn đặt vào tính hợp lệ của nhà cung cấp địa chỉ tra cứu.
Về làm bình thường này theo hình thức so với mô hình, tôi không biết những gì ưa thích Django chiều làm việc, nhưng sở thích của tôi là ở dạng, ví dụ:
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...')
Bạn có thể ném chức năng này tra cứu trong mô hình (hoặc một số tập tin helpers.py) trong trường hợp bạn muốn sử dụng lại nó trong các lĩnh vực khác
Nguồn
2011-01-29 18:41:34
Đối với quốc gia/quốc gia nào? – payne
Xin lỗi: USA. Cụ thể là NYC. –