【发布时间】:2016-11-01 06:40:45
【问题描述】:
我使用 Python、Django 和 DRF。 我有 2 个数据库。 其中一个包含名为“documents”的表(字段:id、name、document_type_id),第二个数据库包含名为“document_type”的表(字段:id、name、description)。 表“document”中的字段“document_type_id”已填充表“document_type”中的值。 正如 Django 文档所说:“Django 目前不支持外键或跨多个数据库的多对多关系。” 问题:在 GET 请求中序列化实体 'document' 时,如何显示嵌套实体 'document_type'?
Example entity 'document':
{
"id": 1,
"name": "document_name",
"document_type": {
"id": 25,
"name": "passport",
"description": "identity document"
}
Example list of 'documents':
{
"id": 1,
"name": "document_name",
"document_type": {
"id": 25,
"name": "passport",
"description": "identity document"
},
{
"id": 2,
"name": "document_name2",
"document_type": {
"id": 24,
"name": "reference",
"description": "reference document"
}
模型的代码(models.py)
class Document(models.Model):
name = models.TextField()
document_type_id = models.BigIntegerField()
class Meta:
db_table = "documents"
managed = False
class DocumentType(models.Model):
name = models.TextField()
description = models.TextField()
class Meta:
db_table = "document_type"
managed = False
序列化器的代码(serializer.py)
class DocumentSerializer(serializers.ModelSerializer):
class Meta:
model = Document
fields = ('id', 'name', 'document_type')
class DocumentTypeSerializer(serializers.ModelSerializer):
class Meta:
model = DocumentType
fields = ('id', 'name', 'description')
视图的代码(views.py)
class DocumentDetailView(generics.RetrieveUpdateDestroyAPIView):
queryset = Document.objects.all()
serializer_class = DocumentSerializer
class DocumentListCreateView(generics.ListCreateAPIView):
queryset = Document.objects.all()
serializer_class = DocumentSerializer
class DocumentTypeView(generics.RetrieveUpdateDestroyAPIView):
queryset = DocumentType.objects.all()
serializer_class = DocumentTypeSerializer
class DocumentTypeListCreateView(generics.ListCreateAPIView):
queryset = DocumentType.objects.all()
serializer_class = DocumentTypeSerializer
【问题讨论】:
-
这个是单值还是列表?
-
可以是单值也可以是列表。
-
您能否添加您的视图代码,以便我可以在您的代码上下文中向您展示示例
-
我在问题中添加了代码
标签: django python-3.x django-rest-framework