andreiru
Сен. 13, 2013 07:28:21
Здравствуйте!
Есть список компаний, нужно сделать для каждой компании отзывы и рейтинг, мой вариант таков:
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, а затем уже по крону запускать скрипт который высчитывает среднее значений оценок (как в школе) и записывает в поле rating у компании, такой вариант нормальный или можно лучше !?
lorien
Сен. 13, 2013 07:51:38
Нормальный вариант. Можно среднюю оценку даже сразу высчитывать а не по крону, если у вас нагрузка на сайт умеренная. Только вот вариант с оценкой от 1 до 5 сомнителен. Я например, не понимаю, чем 1 отличается от 2. Я бы предложил три градации: плохо, нормально, хорошо.
> updated = models.DateTimeField(u'Дата изменения', auto_now=True)
Зачем это поле? Я, помню, пару лет назад тоже пихал во все модели updated, обычно оно никак не использовалось.
andreiru
Сен. 13, 2013 09:23:51
lorien, спасибо за ответ ! Еще такой вопрос: я решил не делать кучу полей (email, phone, address и т.п) для компаний, а сделать просто поле description в котором будут все данные, подскажите что лучше использовать для bbcode'ов в django ?!
lorien
Сен. 13, 2013 10:19:18
А зачем в описании компании использовать bbcode?
Пакеты для работы с bbcode:
https://pypi.python.org/pypi?%3Aaction=search&term=bbcode&submit=search
andreiru
Сен. 13, 2013 10:42:28
lorien
А зачем в описании компании использовать bbcode?
Так поинтересней будет, без кодов просто однородный текст !
Пример описания:
О настататататтатататата
тататататататата
Контакты- 9 мая, 105 - 64 с 9 до 18
пр. мира 25 бокс 16 с 9 до 22
Мы в соц сетях
lorien
Сен. 13, 2013 13:48:48
Не очень понимаю, зачем это нужно, если можно сделать три поля: о нас, контакты и ссылки и потом рулить оформлением через html/css. А так вы хотите перенести оформление на информации в базе данных, что мне кажется костылём.
andreiru
Сен. 14, 2013 20:05:44
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 %}
Такой вариант нормальный ?)
Dr.Livsi
Сен. 16, 2013 15:25:11
Такие данные лучше структурировать на уровне БД:
сделайте две модели: одну для юр.лиц (общее описание юр.лица), вторую - для офисов. В той, где офис - пишите адрес, разбив основные данные по полям: город, улица, здание, комната/офис (blank=True), плюс может быть поле для вольного описания, ну и конечно fk на модельку с юр.лицом. А в модели с юр.лицом сделайте инлайны на офисы.
andreiru
Сен. 17, 2013 08:17:10
Dr.Livsi, вот мой вариант:

в принципе устраивает или все-таки лучше ваш ?
lorien
Сен. 17, 2013 08:44:55
Если вы поле сами заполняете, то не вопрос. А если другие люди (представители фирм), то они будут ошибаться и вводить информацию в неправильном формате.