【问题标题】:Django add a field in a querysetDjango 在查询集中添加一个字段
【发布时间】: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 框架解决这个问题。

标签: python django


【解决方案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',)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-03-10
    • 2019-01-04
    • 1970-01-01
    • 2021-04-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-11-12
    相关资源
    最近更新 更多