Найти - Пользователи
Полная версия: Рейтинг для фирм
Начало » Django » Рейтинг для фирм
1 2
andreiru
Здравствуйте!

Есть список компаний, нужно сделать для каждой компании отзывы и рейтинг, мой вариант таков:

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
Нормальный вариант. Можно среднюю оценку даже сразу высчитывать а не по крону, если у вас нагрузка на сайт умеренная. Только вот вариант с оценкой от 1 до 5 сомнителен. Я например, не понимаю, чем 1 отличается от 2. Я бы предложил три градации: плохо, нормально, хорошо.

> updated = models.DateTimeField(u'Дата изменения', auto_now=True)
Зачем это поле? Я, помню, пару лет назад тоже пихал во все модели updated, обычно оно никак не использовалось.
andreiru
lorien, спасибо за ответ ! Еще такой вопрос: я решил не делать кучу полей (email, phone, address и т.п) для компаний, а сделать просто поле description в котором будут все данные, подскажите что лучше использовать для bbcode'ов в django ?!
lorien
А зачем в описании компании использовать bbcode?

Пакеты для работы с bbcode: https://pypi.python.org/pypi?%3Aaction=search&term=bbcode&submit=search
andreiru
lorien
А зачем в описании компании использовать bbcode?

Так поинтересней будет, без кодов просто однородный текст !

Пример описания:
О нас
тататататтатататата
тататататататата

Контакты
  • 9 мая, 105 - 64 с 9 до 18
    пр. мира 25 бокс 16 с 9 до 22

Мы в соц сетях
lorien
Не очень понимаю, зачем это нужно, если можно сделать три поля: о нас, контакты и ссылки и потом рулить оформлением через html/css. А так вы хотите перенести оформление на информации в базе данных, что мне кажется костылём.
andreiru
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
Такие данные лучше структурировать на уровне БД:
сделайте две модели: одну для юр.лиц (общее описание юр.лица), вторую - для офисов. В той, где офис - пишите адрес, разбив основные данные по полям: город, улица, здание, комната/офис (blank=True), плюс может быть поле для вольного описания, ну и конечно fk на модельку с юр.лицом. А в модели с юр.лицом сделайте инлайны на офисы.
andreiru
Dr.Livsi, вот мой вариант:



в принципе устраивает или все-таки лучше ваш ?
lorien
Если вы поле сами заполняете, то не вопрос. А если другие люди (представители фирм), то они будут ошибаться и вводить информацию в неправильном формате.
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB