小编Bra*_*ade的帖子

Django过滤具有至少一个具有value属性的多对多对象

我正在寻找使用Django的ORM进行复杂的过滤.

楷模:

class Book(models.Model):
    title = models.TextField()
    bestseller = models.BooleanField(default=False)

class Author(models.Model):
    name = models.TextField()
    books = models.ManytoManyField(Book)
Run Code Online (Sandbox Code Playgroud)

如何查询至少拥有一本畅销书的所有作者?

查询:

best_authors = Author.objects.filter(<relevant filter>)
Run Code Online (Sandbox Code Playgroud)

编辑:

根据文档,以下应该工作:

best_authors = Author.objects.filter(books__bestseller=True)
Run Code Online (Sandbox Code Playgroud)

不幸的是,最终会返回重复的作者对象(他/她的每本畅销书的同一作者,一遍又一遍).

python django django-orm

7
推荐指数
1
解决办法
1750
查看次数

串行器上的Django Rest框架条件字段

我有一个模型引用了我想以详细方式序列化的通用关系.

class AType(models.Model):
    foo = CharField()


class BType(models.Model):
    bar = PositiveIntegerField()


class ToSerialize(models.Model):
    scope_limit = models.Q(app_label="app", model="atype") | \
                  models.Q(app_label="app", model="btype")
    content_type = models.ForeignKey(ContentType, limit_choices_to=scope_limit)
    object_id = models.PositiveIntegerField()
    content_object = generic.GenericForeignKey('content_type', 'object_id')
Run Code Online (Sandbox Code Playgroud)

我希望ToSerialize视图集的list方法的JSON看起来像:

[
    {
       "atype": { "id": 1, "foo": "a" }
    },
    {
       "atype": { "id": 2, "foo": "b" }
    },
    {
       "btype": { "id": 1, "bar": "1" }
    },
    {
       "btype": { "id": 2, "bar": "2" }
    }
]
Run Code Online (Sandbox Code Playgroud)

有没有办法让ToSerialize对象的视图集的序列化器生成基于content_type/object_id的"条件字段"来实现这种效果?

django django-rest-framework

6
推荐指数
2
解决办法
6995
查看次数

比较 DeepCopy 中的 Python 对象

有没有办法将 Python 对象与深度复制生成的对象进行比较?

例如:

    import copy 

    original_object = SomeObject()
    cloned_object = copy.deepcopy(original_object)
    assertDeepCopy(original_object, cloned_object)
Run Code Online (Sandbox Code Playgroud)

python assert compare copy

5
推荐指数
1
解决办法
1789
查看次数