从Django模型访问数据

时间:2013-03-29 01:29:14

标签: django django-models django-database

假设我有一个定义为此类型的模型

class BlogPost(Models.Model):
    """ Defines a blog model """
    blog    = models.TextField()
    blog_id = models.AutoField(primary_key=True)
    author  = models.CharField()

我想定义一些方法来访问某个作者的博客帖子,比如'john doe'。我如何定义访问john doe拥有的所有博客帖子的方法,然后将他们的blog_id放入python列表?

def selectPostsByUser(user):
""" Implement function to select all object """

注意:请忽略数据字段的不良表示。它们纯粹是任意的,我只是用名字来消除示例中的含糊不清。

3 个答案:

答案 0 :(得分:1)

我希望您的模型中有用户的外键:

def selectPostsByUser(user):
    return self.objects.filter(user__id=user.id).values_list('blog_id', flat=True)

如果要传递给selectPostsByUser方法的用户是作者(和用户模型对象)。然后你应该在你的模型中将作者作为ForiegnKey字段。

答案 1 :(得分:1)

models.py

class BlogPost(Models.Model):
    """ Defines a blog model """
    blog    = models.TextField()
    blog_id = models.AutoField(primary_key=True)
    author  = models.CharField()

    @classmethod
    def selectPostsByUser(cls, user):
        return cls.objects.filter(author=user)

views.py

user = "john doe"
blogs = BlogPost.selectPostsByUser(user)

答案 2 :(得分:0)

直接回答这个问题,让我们说作者实际上是一个'CharField'。您可以执行以下操作从“jane doe”获取所有博客帖子,然后将所有ID放入列表....

posts = BlogPost.objects.filter(author='jane doe')
list = []
for items in posts:
    lists.append(items.blog_id)