Уведомления

Группа в Telegram: @pythonsu

#1 Сен. 17, 2013 08:50:48

andreiru
От:
Зарегистрирован: 2010-11-06
Сообщения: 154
Репутация: +  0  -
Профиль   Отправить e-mail  

Рейтинг для фирм

lorien. можно повесить clean на поле и проверять адрес ?

Вариант с дополнительной таблицей хорош если нужно делать какие-то манипуляции с адресами, например найти все фирмы вблизи меня ?



Отредактировано andreiru (Сен. 17, 2013 08:53:43)

Офлайн

#2 Сен. 17, 2013 11:29:11

Dr.Livsi
От:
Зарегистрирован: 2010-02-15
Сообщения: 192
Репутация: +  3  -
Профиль   Отправить e-mail  

Рейтинг для фирм

andreiru
Dr.Livsi, вот мой вариант:в принципе устраивает или все-таки лучше ваш ?
итоговый вариант должен прежде всего вас устраивать :)
Мое мнение - если есть возможность структурировать данные на уровне БД и логики приложения - это надо сделать. Иначе - будут косяки от пользователей. Сложность в реализации? Не уверен, что это сильно сложнее. Реально если данные вводятся представителями фирм - в ЛК создается форма, включающая все необходимое: форму для заполнения полей по юр.лицу, и формсеты для заполнения полей по офисам.



Офлайн

#3 Сен. 17, 2013 11:30:51

Dr.Livsi
От:
Зарегистрирован: 2010-02-15
Сообщения: 192
Репутация: +  3  -
Профиль   Отправить e-mail  

Рейтинг для фирм

andreiru
Вариант с дополнительной таблицей хорош если нужно делать какие-то манипуляции с адресами, например найти все фирмы вблизи меня ?
конечно. здесь возможны различные варианты фильтрации, сортировки (в помощь - django_filter).



Офлайн

#4 Сен. 17, 2013 12:49:54

andreiru
От:
Зарегистрирован: 2010-11-06
Сообщения: 154
Репутация: +  0  -
Профиль   Отправить e-mail  

Рейтинг для фирм

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



Отредактировано andreiru (Сен. 17, 2013 13:02:11)

Офлайн

#5 Сен. 17, 2013 14:38:25

Dr.Livsi
От:
Зарегистрирован: 2010-02-15
Сообщения: 192
Репутация: +  3  -
Профиль   Отправить e-mail  

Рейтинг для фирм

Наиболее гибкое решение: сделать таблицу с днями, объединить их через m2m, а в промежуточной таблице поставить время работы (начало, конец рабочего дня, перерыв там) в каждый из дней. Но, скорее всего, это уже излишний функционал: на сколько многим фирмам такое потребуется? Опять же надо будет вводить эти данные - лишнее время операторов, либо лишнее время на разработку формы, где это будет заполнятся автоматически.



Офлайн

#6 Сен. 18, 2013 07:57:44

andreiru
От:
Зарегистрирован: 2010-11-06
Сообщения: 154
Репутация: +  0  -
Профиль   Отправить e-mail  

Рейтинг для фирм

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



Офлайн

#7 Сен. 18, 2013 10:47:13

Dr.Livsi
От:
Зарегистрирован: 2010-02-15
Сообщения: 192
Репутация: +  3  -
Профиль   Отправить e-mail  

Рейтинг для фирм

да



Офлайн

#8 Сен. 18, 2013 19:17:01

lorien
От:
Зарегистрирован: 2006-08-20
Сообщения: 755
Репутация: +  37  -
Профиль  

Рейтинг для фирм

> С work_time нормально или нужно делать таблицу work_days и цеплять рабочие дни через manytomany ?)

Если рабочее время нужно *только* отображать, то норм, если нужно делать выборки по этому параметру, то нужно более сложное решение делать

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version