Models for Postal Addresses

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
class Country(models.Model):
    """Model for countries"""
    iso_code = models.CharField(max_length = 2, primary_key = True)
    name = models.CharField(max_length = 45, blank = False)

    def __unicode__(self):
        return self.name

    class Meta:
        verbose_name_plural = "Countries"
        ordering = ["name", "iso_code"]


class StateProvince(models.Model):
    """Model for states and provinces"""
    iso_code = models.CharField(max_length = 3, primary_key = True)
    name = models.CharField(max_length = 55, blank = False)
    country = models.ForeignKey(Country, to_field="iso_code")

    def __unicode__(self):
        return self.name

    class Meta:
        verbose_name = "State or province"
        """the admin site dies when I try this. apparantely support for
           ordering by foreign keys is broken. uncomment when fixed
           ordering = ["-country", "name"]
        """

class Address(models.Model):
    """Model to store addresses for accounts"""
    address_line1 = models.CharField("Address line 1", max_length = 45)
    address_line2 = models.CharField("Address line 2", max_length = 45,
        blank = True)
    postal_code = models.CharField("Postal Code", max_length = 10)
    city = models.CharField(max_length = 50, blank = False)
    state_province = models.CharField("State/Province", max_length = 40,
        blank = True)
    country = models.ForeignKey(Country, blank = False)

    def __unicode__(self):
        return "%s, %s %s" % (self.city, self.state_province,
                              str(self.country))

    class Meta:
        verbose_name_plural = "Addresses"
        unique_together = ("address_line1", "address_line2", "postal_code",
                           "city", "state_province", "country")

More like this

  1. CountryField (ISO 3166-1) by dougal 4 years ago
  2. Excel Spreadsheet Export by MasonM 4 years, 10 months ago
  3. Lazily lookup dynamically for templates by axiak 5 years, 2 months ago
  4. JSON fixtures of Intl. country codes & dial-codes by dibau_naum_h 2 years, 9 months ago
  5. Unusable passwords for LDAP users by rob.ward 4 years, 3 months ago

Comments

(Forgotten your password?)