andreiru
Сен. 17, 2013 08:50:48
lorien. можно повесить clean на поле и проверять адрес ?
Вариант с дополнительной таблицей хорош если нужно делать какие-то манипуляции с адресами, например найти все фирмы вблизи меня ?
Dr.Livsi
Сен. 17, 2013 11:29:11
andreiru
Dr.Livsi, вот мой вариант:в принципе устраивает или все-таки лучше ваш ?
итоговый вариант должен прежде всего вас устраивать :)
Мое мнение - если есть возможность структурировать данные на уровне БД и логики приложения - это надо сделать. Иначе - будут косяки от пользователей. Сложность в реализации? Не уверен, что это сильно сложнее. Реально если данные вводятся представителями фирм - в ЛК создается форма, включающая все необходимое: форму для заполнения полей по юр.лицу, и формсеты для заполнения полей по офисам.
Dr.Livsi
Сен. 17, 2013 11:30:51
andreiru
Вариант с дополнительной таблицей хорош если нужно делать какие-то манипуляции с адресами, например найти все фирмы вблизи меня ?
конечно. здесь возможны различные варианты фильтрации, сортировки (в помощь - django_filter).
andreiru
Сен. 17, 2013 12:49:54
class Office(models.Model):
company = models.ForeignKey(Company, related_name=u'offices', verbose_name=u'Компания')
city = models.ForeignKey(City, verbose_name=u'Город')
street = models.CharField(u'Улица', max_length=80)
building = models.CharField(u'Номер здания', max_length=5)
room = models.CharField(u'Номер помещения', max_length=5)
description = models.TextField(u'Описание')
work_time = models.CharField(u'Рабочее время', max_length=80)
phone = models.CharField(u'Телефон', max_length=80, blank=True)
email = models.EmailField(u'Email', blank=True)
updated = models.DateTimeField(u'Дата изменения', auto_now=True)
created = models.DateTimeField(u'Дата создания', auto_now_add=True)
С work_time нормально или нужно делать таблицу work_days и цеплять рабочие дни через manytomany ?)
Dr.Livsi
Сен. 17, 2013 14:38:25
Наиболее гибкое решение: сделать таблицу с днями, объединить их через m2m, а в промежуточной таблице поставить время работы (начало, конец рабочего дня, перерыв там) в каждый из дней. Но, скорее всего, это уже излишний функционал: на сколько многим фирмам такое потребуется? Опять же надо будет вводить эти данные - лишнее время операторов, либо лишнее время на разработку формы, где это будет заполнятся автоматически.
andreiru
Сен. 18, 2013 07:57:44
Dr.Livsi{% for office in company.offices.all %}
{{ offices }}
{% endfor %}
Если мне нужно select_related для offices, то это нужно в отображении чере context делать ?
def get_context_data(self, **kwargs):
context = super(CompanyDetail, self).get_context_data(**kwargs)
context['office_list'] = context['company'].offices.select_related('city')
lorien
Сен. 18, 2013 19:17:01
> С work_time нормально или нужно делать таблицу work_days и цеплять рабочие дни через manytomany ?)
Если рабочее время нужно *только* отображать, то норм, если нужно делать выборки по этому параметру, то нужно более сложное решение делать