Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/329.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 是否可以使用TastyPie对ToManyField属性中的元素进行排序?_Python_Django_Rest_Tastypie - Fatal编程技术网

Python 是否可以使用TastyPie对ToManyField属性中的元素进行排序?

Python 是否可以使用TastyPie对ToManyField属性中的元素进行排序?,python,django,rest,tastypie,Python,Django,Rest,Tastypie,我有一个使用Django Tastypie的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.

我有一个使用Django Tastypie的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


有什么办法可以做到这一点吗?

我通过将
BlogPostResource
中的字段更改为以下内容,成功地解决了这个问题:

class BlogPostResource(ModelResource):

    comments = fields.ToManyField("resources.CommentResource",
        attribute=lambda bundle: bundle.obj.comments.all().order_by("published"))

您还可以尝试在实际注释模型(而不是在tastypie注释模型资源中)中添加顺序:


如果我这样做,评论就不会分页
class Comment(models.Model):
    blog_post = models.ForeignKey(BlogPost, related_name="comments")
    published = models.DateTimeField()

    class Meta:
        ordering = ['published']