I need to model a postal address that can have multiline street address, the city, the state (province), and the postal code. the country is omitted.
I need to preserve line breaks in the street addresses but still be able to search the addresses.
I see two ways to do it:
class Address(models.Model):     street = models.ForeignKey('StreetAddress')     city = models.TextField()     province = models.TextField()     code = models.TextField()<br> class StreetAddress(models.Model):     line_number = models.IntegerField()     text = models.TextField() or this one which stores the street address in a single text field but uses special separator characters to encode line breaks:
class Address(models.Model):     street = models.TextField()     city = models.TextField()     province = models.TextField()     code = models.TextField() what is the best way to do it in terms of code readability and efficiency (or their balance)?
Example (in the U.S.): Mr John Smith. 132, My Street, Kingston, New York 12401.
Here's how I model addresses for the US. You could also store a 10 digit zip code (XXXXX-XXXX) if you needed.
You may also consider adding a point field, or a poly field from geodjango depending on what you're using the addresses for.
from django.contrib.gis.db import models from django.utils.translation import ugettext as _ from django.contrib.localflavor.us.models import USStateField  class UsLocation(models.Model):     address_1 = models.CharField(_("address"), max_length=128)     address_2 = models.CharField(_("address cont'd"), max_length=128, blank=True)      city = models.CharField(_("city"), max_length=64, default="Zanesville")     state = USStateField(_("state"), default="OH")     zip_code = models.CharField(_("zip code"), max_length=5, default="43701") If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With