伙计们,我有一个Django聊天应用程序,人们组成小组并在其下发布回复。每当用户查看组中的回复时,都会看到"看到的对象"为所述回复和所述用户创建(并存储)。
这样,我就可以在每个组中每个用户的所有看不见的回复之前显示新标记。
我的问题是:对于回复的查询集中的每个对象,如何为特定用户追加与每个回复相对应的已查看对象?如果没有这样的物体,它将保持无我认为。
相关模型是:
class Reply(models.Model):
text = models.TextField(validators=[MaxLengthValidator(500)])
writer = models.ForeignKey(User)
submitted_on = models.DateTimeField(db_index=True, auto_now_add=True)
class Seen(models.Model):
seen_user = models.ForeignKey(User)
seen_at = models.DateTimeField(auto_now_add=True)
which_reply = models.ForeignKey(Reply)
为用户看到的回复创建了看到的对象;他们不会以其他方式创建。
答案 0 :(得分:1)
您可以使用href_link
对象执行此操作:
https://docs.djangoproject.com/en/1.7/ref/models/querysets/#prefetch-related
e.g。
Prefetch
关于Django< 1.7你可以做两个查询并在视图中将它们组合起来,例如
seen_qs = Seen.objects.filter(user=request.user)
replies_qs = Reply.objects.prefetch_related(
Prefetch('seen_set', queryset=seen_qs)
)