初始化drf序列化器



我有两个模型:User和Employee。我想通过drf返回以下json:[{"admin":{}"员工 ': [{}, {}] }, { ' 管理员工:{} ': [{}, {}] } ].

然而,我不明白如何用数据初始化TeamSerializer。我应该向TeamSerializer

传递什么?
class Meta:
model = User
fields = [
"first_name",
"last_name",
"email",
"hourly_rate",
"role",
]

class EmployeeSerializer(serializers.ModelSerializer):
class Meta:
model = Employee
fields = [
"first_name",
"last_name",
"email",
"hourly_rate",
"role",
]

class TeamSerializer(serializers.Serializer):
admin = AdminSerializer()
employee = EmployeeSerializer()

您需要为团队创建一个模型来指定关系。

如果我理解正确的话,每个团队都有一个管理员和多个员工,每个员工可以是一个团队的成员,一个管理员可以管理一个团队。所以对于admin来说是一对关系,对于employee来说是一对多关系。

模型应该是这样的:

class Team(models.Model):
admin = models.OneToOneField(get_user_model(), on_delete=models.SET_NULL, null=True)
class Employee(models.Model):
user = models.OneToOneField(get_user_model(), on_delete=models.CASCADE)
team = models.ForeignKey(Team, on_delete=models.CASCADE, related_name="employees")
# all the rest of your fields here

然后为Team创建一个序列化器:

class TeamSerializer(serializers.ModelSerializer):
admin = UserSerializer()
employees = EmployeeSerializer()
class Meta:
model = Team
fields = ["admin", "employees"]

我会更进一步,创建一个Admin模型和AdminSerializer模型,也提供有关管理的更多信息,但这取决于您的需要。

最新更新