как смоделировать почтовый адрес

Мне нужно смоделировать почтовый адрес, который может иметь многострочный адрес, город, штат (провинцию) и почтовый индекс. страна не указана.

Мне нужно сохранить разрывы строк в уличных адресах, но по-прежнему иметь возможность искать адреса.

Я вижу два способа сделать это:

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()

или тот, который хранит адрес в одном текстовом поле, но использует специальные символы-разделители для кодирования разрывов строк:

class Address(models.Model):
    street = models.TextField()
    city = models.TextField()
    province = models.TextField()
    code = models.TextField()

как лучше всего это сделать в терминах читаемости и эффективности кода (или их сбалансированности)?

23
задан martin-martin 6 May 2019 в 06:43
поделиться

1 ответ

Вот как я моделирую адреса для США. Вы также можете сохранить 10-значный почтовый индекс (XXXXX-XXXX), если вам нужно.

Вы также можете подумать о добавлении точечного поля или поли-поля из geodjango в зависимости от того, для чего вы используете адреса.

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")
11
ответ дан 29 November 2019 в 02:54
поделиться
Другие вопросы по тегам:

Похожие вопросы: