python - 序列化器关系在 Django Rest 框架中不起作用
问题描述
我的应用程序中有两个模型。这是我的代码models.py
:
from django.db import models
class TblDivision(models.Model):
strdivisionname = models.CharField(db_column='strDivisionName', max_length=35, blank=True, null=True) # Field name made lowercase.
class Meta:
db_table = 'Tbl_Division'
class TblPosition(models.Model):
strpositionname = models.CharField(db_column='strPositionName', max_length=30, blank=True, null=True) # Field name made lowercase.
class Meta:
db_table = 'Tbl_Position'
class TblEmployee(models.Model):
strname = models.CharField(db_column='strName', max_length=70, blank=True, null=True) # Field name made lowercase.
stremployeeid = models.CharField(db_column='strEmployeeID', max_length=10, blank=True, null=True) # Field name made lowercase.
bitactive = models.BooleanField(db_column='bitActive', blank=True, null=True) # Field name made lowercase.
intdivision = models.ForeignKey(TblDivision, db_column='intDivision',related_name='division', on_delete=models.CASCADE)
intposition = models.ForeignKey(TblPosition, db_column='intPosition',related_name='position', on_delete=models.CASCADE)
class Meta:
db_table = 'Tbl_Employee'
这是我的代码serializer.py
:
from rest_framework import serializers
from .models import TblEmployee,TblDivision
class DivisionSerializer(serializers.ModelSerializer):
class Meta:
model = TblDivision
fields=['id','strDivisionName']
class EmployeeSerializer(serializers.ModelSerializer):
division = DivisionSerializer(many=True, read_only=True)
class Meta:
model = TblEmployee
fields=['id','strname','stremployeeid','intdivision','division']
这是我的views.py
:
from .models import TblEmployee
from .serializer import EmployeeSerializer,DivisionSerializer
from rest_framework import status
from rest_framework.response import Response
from rest_framework.decorators import api_view
@api_view(["GET", ])
def api_list_employee_view(request):
try:
employee_list = TblEmployee.objects.all()
except TblEmployee.DoesNotExist:
return Response(status=status.HTTP_404_NOT_FOUND)
if request.method == "GET":
serializer = EmployeeSerializer(employee_list, many="true")
dataEmployee = serializer.data
return Response(dataEmployee)
我想创建一个简单的 API,以 JSON 格式显示来自 Employee 模型的数据及其部门名称。但 API 不显示该strDivisionName
字段。它仅显示Employee
模型中的字段。谁能解释我的问题及其解决方案?我还是 Django Rest Framewrok 的新手。之前谢谢
解决方案
使用以下代码更新您的序列化程序:
from rest_framework import serializers
from .models import TblEmployee,TblDivision
class DivisionSerializer(serializers.ModelSerializer):
class Meta:
model = TblDivision
fields=['id','strdivisionname']
在字段中,您显示错误的字段名称。这是strdivisionname不是strDivisionName。
推荐阅读
- c# - 如何使用 Textchanged 事件在文本框中执行 RowFIlter?
- css - Wordpress 网站没有响应媒体查询的背景变化?迪维主题
- redis - 是否有任何 OSS 充当 Redis 主服务器,并将复制请求代理到真正的 Redis?
- angular - 如何获取要包含在 resourceTimeGridDay 中的资源事件
- ruby-on-rails - 即使应用程序更新到 ruby 2.5.1,也无法将应用程序推送到 heroku
- ruby-on-rails - 是否可以为 ActiveStorage 指定自定义 CDN?
- mongodb - Insert default values not working mongodb
- r - 如何在 Amazon EC2 的 RStudio 中安装字段包?
- python - 如何为新对象赋予不同的属性以及 __init__ 究竟是如何工作的?
- selenium - 无法在由 selenium chrome 驱动程序控制的 Chrome 窗口中的 Chrome 开发工具中使用控制台