Мне нужно создать пользовательский поток. Я использую Content Type Framework в Django 1.5, и я использую сторонние пакеты «Phileo» (по вкусу), Django-Posts (for Post), Dialogos (комментарии)Создание потока операций в Django
У меня есть сообщение, комментарий, Соединение вместе с моделями баз данных событий
Вот что мое сообщение Модель выглядеть
class Post(models.Model):
text = models.TextField(_("Text"))
.... # no GenericForeignKey
Вот мои Комментарии модели
class Comment(models.Model):
content_type = models.ForeignKey(ContentType)
object_id = models.IntegerField()
content_object = GenericForeignKey()
comment = models.TextField()
Вот мой UserEvent Модель
class UserEvent(models.Model):
event = models.ForeignKey(Event)
data_type = models.ForeignKey(ContentType, null=True)
data_id = models.PositiveIntegerField(null=True)
data_object = generic.GenericForeignKey('data_type', 'data_id')
class Event(models.Model):
eventId = models.CharField(max_length=100)
title = models.CharField(max_length=200, default="untitled")
UserEvent содержит всю активность пользователя, как (LoggedIn, loggedOut, SignUp, Создать сообщение, комментарий на сообщение, Как сообщение и т.д.).
Q - 1 * Что будет лучшим способом создания потока активности из него. *
Если я сделать что-то вроде feeds = UserEvents.object.all()
и в шаблоне я могу сделать ..
{% for item in feeds%}
{% if item.data_type.name == 'post' %}
{{ item.data_object.text }}
<!-- Show post -->
{% endif %}
{% if item.data_type.name == 'connection' %}
<!-- Show User 3 and User 5 are now friend -->
{% endif %}
{% endfor %}
Но проблема Post
не имеет внешний ключ к Comments
модели.
Q - 2 Так как я могу показать комментарии, связанные с сообщением. Я действительно не хочу использовать 'Шаблонные метки'. Другое обходное решение заключается в том, что я положил comments = generic.GenericRelation(Comment)
в Post Model, но я хочу быть общим (и я считаю, что UserEvent имеет все связанные элементы), потому что в будущем у меня есть еще несколько моделей. Например, «Share», «Tag», «Likes» и т. Д. .. THEN мне нужно положить все родовые отношения в мой POST.
class Like(models.Model):
sender = models.ForeignKey(AUTH_USER_MODEL, related_name="liking")
receiver_content_type = models.ForeignKey(ContentType)
receiver_object_id = models.PositiveIntegerField()
receiver = generic.GenericForeignKey(
ct_field="receiver_content_type",
fk_field="receiver_object_id"
)
ОК .. Я сохраняю UserEvent уже .. проблема в том, как получить комментарии от него и сохранить его общий. См. Мой шаблон .. UserEvent работает для меня, но я не знаю, как получить данные из it .. –
UserEvent уже записывает активность пользователя (loggedIn, loggedOut, SignUp, Create Post, Comment on Post, Like Post и т. д.). Вы видите, что Post не имеет внешнего ключа для комментариев, Likes и т. Д., Так как я могу включить их во время запроса UserEvent? –
Это может быть то, о чем вы говорили в Q2, но можете ли вы создать @property в Post, как def comment (self): вернуть список комментариев, связанных с этим сообщением, из общего отношения .. и сделать то же самое для статьи и т. Д.? Где-то определение того, как получить комментарии для каждого, должно быть выполнено ... – PhoebeB