Форум сайта python.su
Здравствуйте!
Есть список компаний, нужно сделать для каждой компании отзывы и рейтинг, мой вариант таков:
class Company(models.Model): rating = models.DecimalField(u'Рейтинг', max_digits=5, decimal_places=2, default=0) ... class Review(models.Model): user = models.ForeignKey(User, verbose_name=u'Пользователь') company = models.ForeignKey(Company, related_name=u'reviews', verbose_name=u'Компания') rating = models.IntegerFileld(u'Оценка') comment = models.TextField(u'Отзыв') updated = models.DateTimeField(u'Дата изменения', auto_now=True) created = models.DateTimeField(u'Дата создания', auto_now_add=True)
Офлайн
Нормальный вариант. Можно среднюю оценку даже сразу высчитывать а не по крону, если у вас нагрузка на сайт умеренная. Только вот вариант с оценкой от 1 до 5 сомнителен. Я например, не понимаю, чем 1 отличается от 2. Я бы предложил три градации: плохо, нормально, хорошо.
> updated = models.DateTimeField(u'Дата изменения', auto_now=True)
Зачем это поле? Я, помню, пару лет назад тоже пихал во все модели updated, обычно оно никак не использовалось.
Офлайн
lorien, спасибо за ответ ! Еще такой вопрос: я решил не делать кучу полей (email, phone, address и т.п) для компаний, а сделать просто поле description в котором будут все данные, подскажите что лучше использовать для bbcode'ов в django ?!
Офлайн
А зачем в описании компании использовать bbcode?
Пакеты для работы с bbcode: https://pypi.python.org/pypi?%3Aaction=search&term=bbcode&submit=search
Отредактировано lorien (Сен. 13, 2013 10:20:01)
Офлайн
lorien
А зачем в описании компании использовать bbcode?
Отредактировано andreiru (Сен. 13, 2013 10:43:09)
Офлайн
Не очень понимаю, зачем это нужно, если можно сделать три поля: о нас, контакты и ссылки и потом рулить оформлением через html/css. А так вы хотите перенести оформление на информации в базе данных, что мне кажется костылём.
Офлайн
lorien
У фирмы может быть несколько офисов
Что если cделать поле: address = models.TextField(u'Адрес(а)')
В него заносить данные в формате:
ул. 9мая д.40 оф.250 - отдел продаж с 9 до 20
пр. Мира д.4 оф.25 - что то еще круглосуточно
затем я хочу разбить данные с помощью splitlines и line.rsplit('-', 1) в шаблонном фильтре
for line in address.splitlines():
address, description = line.rsplit('-', 1)
{% for address, description in company.address|parse_address %}
{% endfor %}
Такой вариант нормальный ?)
Отредактировано andreiru (Сен. 14, 2013 20:08:03)
Офлайн
Такие данные лучше структурировать на уровне БД:
сделайте две модели: одну для юр.лиц (общее описание юр.лица), вторую - для офисов. В той, где офис - пишите адрес, разбив основные данные по полям: город, улица, здание, комната/офис (blank=True), плюс может быть поле для вольного описания, ну и конечно fk на модельку с юр.лицом. А в модели с юр.лицом сделайте инлайны на офисы.
Офлайн
Dr.Livsi, вот мой вариант:
в принципе устраивает или все-таки лучше ваш ?
Офлайн
Если вы поле сами заполняете, то не вопрос. А если другие люди (представители фирм), то они будут ошибаться и вводить информацию в неправильном формате.
Офлайн