将SQL请求转换为django

时间:2014-04-24 10:13:29

标签: python mysql sql django subquery

我正在尝试创建一个请求(在django中),它将返回一个帖子数组(只有用户的帖子,以下是当前用户)。 这是我的模特

文章:

class Post(models.Model):
      title = models.CharField("Headline", max_length=100)
      body = models.TextField(max_length=1000)
      user_id = models.ForeignKey(User)
      thumbnail = models.FileField(upload_to=get_upload_file_name, blank=True)
      timestamp = models.DateTimeField(auto_now_add=True)

跟踪/跟随:

class FollowUser(models.Model):
      who_id = models.IntegerField()
      whom_id = models.IntegerField()
      timestamp = models.DateTimeField(auto_now_add=True)

用户:

class UserProfile(models.Model):
      user = models.OneToOneField(User, unique=True)
      profile_pic = models.FileField(upload_to=get_upload_file_u_name, default='default.png', blank=True)
      bio = models.TextField(null=True)
      website = models.CharField(blank=True, max_length=100)
      location = models.CharField(blank=True, max_length=100)

      def __unicode__(self):
           return "%s's profile" % self.user

我创建的SQL请求:

     SELECT *  FROM POSTS Where user_id IN (select whom_id from FOLLOWERS Where user_id = 1 )

所以,我试图将这个sql代码翻译成django-like,但我无法做到。 主要问题是我无法请求数组。

需要帮助! 感谢

2 个答案:

答案 0 :(得分:0)

通过组合应用程序名称和模型的小写名称自动生成表名称。尝试使用<appname>_posts

答案 1 :(得分:0)

试试这个

Post.objects.filter(user_id__in=FollowUser.objects.filter(who_id=1).values_list('whom_id'))

您可以使用views.py参数

request中使用此功能
Post.objects.filter(user_id__in=FollowUser.objects.filter(who_id=request.user.id).values_list('whom_id'))