Django 在查询集中添加一个字段
Posted
技术标签:
【中文标题】Django 在查询集中添加一个字段【英文标题】:Django add a field in a queryset 【发布时间】:2018-05-25 03:07:27 【问题描述】:我有一个查询集,其中包含在 Bar 模型中定义的名为“foo”的字段。
result = Bar.objects.values('foo').distinct()
我想返回一个包含 'foo' 和 'foo' 的 slug 版本的查询集。
如何在我的 Bar 模型中不创建新字段的情况下做到这一点?
【问题讨论】:
即使这是可能的,您也可能需要向模型添加一个新字段。例如,如果您在 URL 中使用 slug,那么您需要添加该字段以便您可以通过 slug 查找。 但我必须在 6 个字段上做到这一点。它会占用我的磁盘太多空间(因为我在这个字段上做了一个不同的操作,因为有 10 个不同的值) 真的吗?你真的有如此巨大的有限磁盘空间吗? 不,但我将存储 6 个字段,这显然不是这样做的好方法。我正在尝试在序列化时使用 django rest 框架解决这个问题。 【参考方案1】:解决方案正在使用 DRF:Django REST Framework: adding additional field to ModelSerializer
对我来说:
class BarSerializer(serializers.ModelSerializer):
slug = serializers.SerializerMethodField('slug_field')
@staticmethod
def slug_field(bar):
return slugify(bar['foo'])
class Meta:
model = Indicateur
fields = ('foo', 'slug',)
【讨论】:
以上是关于Django 在查询集中添加一个字段的主要内容,如果未能解决你的问题,请参考以下文章