我是 Python 和 Django 的新手,所以请耐心等待。
我有以下型号:
class User(models.Model):
name = models.CharField(max_length = 50)
...
class Post(models.Model):
userBy = models.ForeignKey(User, related_name='post_user')
userWall = models.ForeignKey(User, related_name='receive_user')
timestamp = models.DateTimeField()
post = models.TextField()
class Friend(models.Model):
user1 = models.ForeignKey(User, related_name='request_user')
user2 = models.ForeignKey(User, related_name='accept_user')
isApproved = models.BooleanField()
class Meta:
unique_together = (('user1', 'user2'), )
我知道这可能不是用 Django 处理它的最好/最简单的方法,但我是这样学习的,我想保持这样。
现在,我想做的就是从一个人和它的朋友那里得到所有的帖子。现在的问题是如何使用 Django 过滤器来做到这一点?
我认为在 SQL 中它看起来像这样:
SELECT p.* FORM Post p, Friend f
WHERE p.userBy=THEUSER OR (
(f.user1=THEUSER AND f.user2=p.userBy) OR
(f.user2=THEUSER AND f.user1=p.userBy)
)
不保证正确性,只是为了说明我正在寻找的结果。