我有一个类似的模型:
Shop
Categories
Items
我可以按照以下方式过滤商店的类别:
categories = fields.ToManyField('api.CategoryResource', attribute=lambda bundle: Category.objects.filter(parent__isnull=True), full= True)
假设我想在查询商店时过滤已发布的商品。
我该如何过滤?我应该在哪里写查询?
items = fields.ToManyField(ItemResource, attribute=lambda bundle: Item.objects.filter(category=bundle.obj, published=True),related_name='items', full=True)
这段代码给了我错误:
{"error": "The model '<Category: category1>' has an empty attribute '<function <lambda> at 0x10ba506e0>' and doesn't allow a null value."}
答案 0 :(得分:0)
当lambda函数返回的列表为空时,会发生此错误。 因此,添加null = True将解决此问题。
所以你最终得到了这个:
items = fields.ToManyField(ItemResource, attribute=lambda bundle: Item.objects.filter(category=bundle.obj, published=True),related_name='items', full=True, null=True)