2

DjangoTastypieを使用したRESTAPIがあります。次のコードが与えられた

モデル

class BlogPost(models.Model):
    # class body omitted, it has a content and an author


class Comment(models.Model):
    blog_post = models.ForeignKey(BlogPost, related_name="comments")
    published = models.DateTimeField()
    # rest of class omitted

リソース

class CommentResource:
    # omitted

class BlogPostResource(ModelResource):

    comments = fields.ToManyField("resources.CommentResource",
        attribute="comments")

ブログ投稿を依頼すると、次のようになります。

GET: api/blogpost/4/

{
   'content' : "....",
   'author' : "....",
   'comments' : ['api/comment/4/', 'api/comment/5']
}

ただし、コメントは必ずしもフィールドでソートされているとは限りません。特定のキーでソートされていることを確認したい(published

これを達成する方法はありますか?

4

2 に答える 2

4

フィールドをBlogPostResource次のように変更することで、問題を解決することができました。

class BlogPostResource(ModelResource):

    comments = fields.ToManyField("resources.CommentResource",
        attribute=lambda bundle: bundle.obj.comments.all().order_by("published"))
于 2012-06-15T22:32:57.843 に答える
2

また、(tastypie Comment ModelResource ではなく) 実際の Comment Model に順序付けを追加することもできます。

class Comment(models.Model):
    blog_post = models.ForeignKey(BlogPost, related_name="comments")
    published = models.DateTimeField()

    class Meta:
        ordering = ['published']
于 2013-06-30T00:28:19.730 に答える