Форум сайта python.su
Вопрос именно по архитектуре поэтому рискнул добавить вопрос в эту ветку.
Существует некая система микроблогов, бордов. Достаточно минималистичная. У каждого пользователя есть свой борд (простой фид с одной ежедневной публикацией). Вопрос как лучше написать подписку на эти борды.
Желательно чтобы можно было передавая только id пользователя получать отсортированый по дате список всех публикаций от всех бордов, на который подписан пользователь.
Пока совершенно не понимаю как лучше организовать хранение списка в базе данных. Склоняюсь к ManytoManyFiled но никогда с ним не работал еще.
Отредактировано in (Сен. 20, 2013 00:53:29)
Офлайн
а в чем проблема?
Если юзать джанго, то модель пользователя уже есть. Надо только модель для борда:
class Board(models.Model): user = ForeignKey(User, ....) created = models.DateTimeField(...) post = models.TextField(....)
inсписка чего?
Пока совершенно не понимаю как лучше организовать хранение списка в базе данных.
Офлайн
many-to-many, возможно с дополнительной промежуточной моделью (https://docs.djangoproject.com/en/dev/topics/db/models/#extra-fields-on-many-to-many-relationships), если хотите хранить какие-то дополнительные параметры связи, например, дата создания подписки
Вообще ваш вопрос для подфорума “Django” предназначен.
Офлайн
in
Вопрос именно по архитектуре поэтому рискнул добавить вопрос в эту ветку.
lorienАрхитектура только у проектов на джанго бывает? ;)
Вообще ваш вопрос для подфорума “Django” предназначен.
user: { _id:1, name:'Saha', boards:[2,5,6,8] } board: { user:1, post:'...', created:'recently' }
(user) -> db.board.find({ user:{ $in:user.boards } }).sort({ created:-1 })
(user, board_id) -> db.board.update({ _id:user._id }, { $addToSet:{ boards:board_id } })
Отредактировано o7412369815963 (Сен. 20, 2013 10:51:17)
Офлайн
lorien
many-to-many, возможно с дополнительной промежуточной моделью (https://docs.djangoproject.com/en/dev/topics/db/models/#extra-fields-on-many-to-many-relationships), если хотите хранить какие-то дополнительные параметры связи, например, дата создания подпискиВообще ваш вопрос для подфорума “Django” предназначен.
class Board (models.Model): title = models.CharField (max_length=30) description = models.CharField (max_length=300) author = models.ForeignKey(User) created = models.DateTimeField (editable=False) subscribers = models.ManyToManyField(User, through='"Subscription") class Post (models.Model): title = models.CharField (max_length=30) description = models.CharField (max_length=320) created = models.DateTimeField (editable=False) board = models.ForeignKey (Board) class Subscription (models.Model): subcsriber = models.ForeignKey(User) board = models.ForeignKey(Board) sub_date = models.DateTimeField (auto_now_add=True)
Отредактировано in (Сен. 20, 2013 12:26:16)
Офлайн
> Архитектура только у проектов на джанго бывает? ;)
В данном случае речь идёт о Django т.к. в первом посте автор упомянул термин ManyToManyField.
> Можно ли будет одним запростом получить отсортированный по дате публикации список постов или потребуется сначала получить список групп, обойти их в цикле у каждой запросить свой список постов, объединить их в один список и отсортировать?
Я думаю можно одним запросом, но что именно вам нужно я не понял.
Офлайн