如何在 Django 序列化程序中获取外键 ID 而不是引用模型

托克萨

我对 Django 真的很陌生,但在我们的项目中,我们有一个 Django 后端,没有其他人愿意接触它,所以我必须对此进行一些调整。模型设置,一切正常,但我们需要一个新视图,我们需要一个模型的基本数据,没有引用模型(只需要外键 ID)。我花了一天时间寻找解决方案。也许它是如此微不足道,它没有写到任何地方:)

楷模:

class Row(models.Model):
    row = models.IntegerField(null=True, blank=True)
    height = models.TextField(null=True, blank=True)
    key = models.CharField(max_length=36, unique = True)

    def save(self, *args, **kwargs):
        super(Row, self).save(*args, **kwargs)


class Column(models.Model):
    col = models.IntegerField(null=True, blank=True)
    width = models.TextField(null=True, blank=True)

    key = models.CharField(max_length=36, unique = True)

    def save(self, *args, **kwargs):
        super(Column, self).save(*args, **kwargs)


class Product(models.Model):

    key = models.CharField(max_length=36, unique = True)

    text = models.TextField(null=True, blank=True)

    column = models.ForeignKey(Column, db_column='column_key', to_field='key', related_name="products")
    row  = models.ForeignKey(Row, db_column='row_key', to_field='key', related_name="products")
    merged_with = models.ForeignKey("Product", db_column='merged_with_key', to_field='key', related_name="merges", blank=True, null=True)

    created_at = models.DateTimeField(auto_now_add=True)
    updated_at = models.DateTimeField(auto_now=True)
    updated_by = models.ForeignKey('auth.User', null=True)

现在我需要一个视图中的产品列表,json 输出如下所示:

{
    id: 1,
    key: "1746495d-8ea0-42df-9ed9-06df621ef7c5",
    column_key: "<key of refrenced column>"
    merged_with_key: "<key of refrenced product>"
    row_key: "<key of refrenced row>"
    text: "sometext"
}

提前致谢,

乔巴

比普尔耆那教

您在这里需要的是 ModelSerializer 的简单扩展。谁的定义看起来像这样。

class ProductSerializer(serializers.ModelSerializer):
    class Meta:
        model = Products
        fields = ('id','key', 'column', 'merged_with', 'row', 'text')

和这样的新观点。

class ProductListView(APIView):

    def get(self, request):
        return Response(ProductSerializer(Products.objects.all(), many=True).data)

您必须将 url 映射到此视图并导入必要的依赖项。

使用序列化程序时,您的输出看起来会略有不同。

{
    id: 1,
    key: "1746495d-8ea0-42df-9ed9-06df621ef7c5",
    column: "<key of refrenced column>"
    merged_with: "<key of refrenced product>"
    row: "<key of refrenced row>"
    text: "sometext"
}

我希望它有帮助。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何在Django中序列化特定ID?

来自分类Dev

如何使用输入值在序列化器中获取外键引用

来自分类Dev

如何在Django序列化器中的外键关系之上从ManyToMany关系访问字段?

来自分类Dev

Django 休息框架。如何序列化模型名称和实例值而不是 content_type 和 object_id?

来自分类Dev

嵌套关系序列化程序中的Django Rest Framework模型ID字段

来自分类Dev

Django rest PUT 请求序列化程序无法使用外键更新模型

来自分类Dev

Django - 通过带有外键引用的序列化程序创建一个实例

来自分类Dev

如何让Django引用名称而不是id / pk

来自分类Dev

使用外键Django序列化模型

来自分类Dev

如何从Django模型获取ID

来自分类Dev

如何从Django模型获取ID

来自分类Dev

从Django API中获取外键对象而不是ID

来自分类Dev

Django:获取外键的值而不是 id

来自分类Dev

我如何在Django Rest Framework序列化程序中获取父对象

来自分类Dev

在Django Rest Framework中,如何限制要序列化的外键对象的数量

来自分类Dev

Django:如何在序列化程序的自定义方法中使用模型属性?

来自分类Dev

如何在Django中模拟模型的外键模型?

来自分类Dev

Django:如何在类中添加模型类或引用?

来自分类Dev

如何在序列化程序Django中序列化BigIntegerField,TextField

来自分类Dev

如何在序列化器/视图Django REST Framework中合并多个模型?

来自分类Dev

如何在django rest框架中将相关字段包括到模型序列化中?

来自分类Dev

如何在django rest框架中序列化多个关系模型

来自分类Dev

如何在Django中获取模型实例的外键表的名称?

来自分类Dev

Django序列化程序ManyToMany重新运行名称数组,而不是ID数组

来自分类Dev

在Django中序列化对象而不是模型

来自分类Dev

Django(模型):如何从外键获取实例

来自分类Dev

在Django查询中使用values()获取模型而不是ID

来自分类Dev

如何在 Django Rest Framework 中使用序列化程序检索具有嵌套关系的模型数据?

来自分类Dev

更改Django Rest Framework中序列化对象的结构(模型内容之外的拉ID字段)

Related 相关文章

  1. 1

    如何在Django中序列化特定ID?

  2. 2

    如何使用输入值在序列化器中获取外键引用

  3. 3

    如何在Django序列化器中的外键关系之上从ManyToMany关系访问字段?

  4. 4

    Django 休息框架。如何序列化模型名称和实例值而不是 content_type 和 object_id?

  5. 5

    嵌套关系序列化程序中的Django Rest Framework模型ID字段

  6. 6

    Django rest PUT 请求序列化程序无法使用外键更新模型

  7. 7

    Django - 通过带有外键引用的序列化程序创建一个实例

  8. 8

    如何让Django引用名称而不是id / pk

  9. 9

    使用外键Django序列化模型

  10. 10

    如何从Django模型获取ID

  11. 11

    如何从Django模型获取ID

  12. 12

    从Django API中获取外键对象而不是ID

  13. 13

    Django:获取外键的值而不是 id

  14. 14

    我如何在Django Rest Framework序列化程序中获取父对象

  15. 15

    在Django Rest Framework中,如何限制要序列化的外键对象的数量

  16. 16

    Django:如何在序列化程序的自定义方法中使用模型属性?

  17. 17

    如何在Django中模拟模型的外键模型?

  18. 18

    Django:如何在类中添加模型类或引用?

  19. 19

    如何在序列化程序Django中序列化BigIntegerField,TextField

  20. 20

    如何在序列化器/视图Django REST Framework中合并多个模型?

  21. 21

    如何在django rest框架中将相关字段包括到模型序列化中?

  22. 22

    如何在django rest框架中序列化多个关系模型

  23. 23

    如何在Django中获取模型实例的外键表的名称?

  24. 24

    Django序列化程序ManyToMany重新运行名称数组,而不是ID数组

  25. 25

    在Django中序列化对象而不是模型

  26. 26

    Django(模型):如何从外键获取实例

  27. 27

    在Django查询中使用values()获取模型而不是ID

  28. 28

    如何在 Django Rest Framework 中使用序列化程序检索具有嵌套关系的模型数据?

  29. 29

    更改Django Rest Framework中序列化对象的结构(模型内容之外的拉ID字段)

热门标签

归档