【问题标题】:Django get fields of the ForeignKey Model efficiently?Django 有效地获取 ForeignKey 模型的字段?
【发布时间】:2020-10-22 10:03:04
【问题描述】:

我使用 django-rest-framework 作为后端并作为前端做出反应

例如,如果我在 Django 中有以下表格

class Master1(models.Model):
    field1 = models.CharField(max_length = 100)
    field2 = models.CharField(max_length = 100)
    field3 = models.CharField(max_length = 100)

class Master2(models.Model):
    field1 = models.CharField(max_length = 100)
    field2 = models.CharField(max_length = 100)
    field3 = models.CharField(max_length = 100)

class Transaction(models.Model):
    master1 = models.ForeignKey(Master1)
    master2 = models.ForeignKey(Master2)
    title = models.CharField(max_length = 100)

我想为 Trasaction 创建一个视图,该视图在前端显示其每个相关模型的多个字段。有人可以提出一种有效的方法吗?

我应该只在视图中定义它需要的字段还是应该使用嵌套的序列化器?

【问题讨论】:

    标签: django django-models django-rest-framework django-views


    【解决方案1】:

    您可以使用depth 功能从序列化程序的Master1/Master2 模型中加载数据:

    class TransactionSerializer(serializers.ModelSerializer):
        class Meta:
            model = Transaction
            fields = "__all__"
            depth = 1
    

    要有效地从 DB 加载这些 FK 数据,请使用 select_related。例如:

    queryset = Transaction.objects.select_related('master1', 'master2')
    data = TransactionSerializer(queryset, many=True).data
    

    【讨论】:

    • depth 属性基本上是嵌套 ForeignKey 字段的序列化对吧?
    • 谢谢,你能不能也看看这个链接,这是我问的另一个问题。有点和这个有关stackoverflow.com/questions/64482884/…
    猜你喜欢
    • 2015-11-30
    • 1970-01-01
    • 2018-03-01
    • 2017-12-15
    • 2017-04-19
    • 2010-11-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多