用于选择的API仅允许外键上的许多字段。 例: 有一个“应用”模型,该模型的字段为“部门”:选项包括IT,银行业务,航空航天等。 根据所选的部门,只能为该部门定义一组特定的角色,以选择要申请的角色。
型号:
class Role(models.Model):
role = models.CharField(max_length=255, primary_key=True)
def __str__(self):
return self.role
class Sector(models.Model):
sector = models.CharField(max_length=255)
role = models.ManyToManyField(Role)
def __str__(self):
return self.sector
class Apply(models.Model):
name = models.CharField(max_length=255)
experience = models.IntegerField()
sector = models.ForeignKey(Sector, on_delete=models.CASCADE)
role = models.ManyToManyField(Role)
def __str__(self):
return self.name
序列化器:
class RoleSerializer(ModelSerializer):
class Meta:
model = Role
fields = ('role', )
class SectorSerializer(ModelSerializer):
class Meta:
model = Sector
fields = ('sector', 'role', )
class ApplySerializer(ModelSerializer):
class Meta:
model = Apply
fields = ('name', 'experience', 'sector', 'role')
但是,它甚至允许申请IT部门的人申请为航空航天部门定义的飞行员角色。是否可以使API使得仅允许申请特定部门的人员申请为该部门定义的角色?
例如对于以下为部门定义的角色:
IT “开发人员”,“测试人员”,“支持”
银行 “收银员”,“分支经理”,“客户支持”,“贷款经理”
航空航天 “飞行员”,“客舱乘员”,“地面支持”,“票务支持”
以下用于通过api进行POST请求的有效负载-/ api / apply_job应该视为有效,因为“开发人员”和“测试人员”都是通过IT部门的有效定义角色:
{
"name": "first last"
"experience": 10
"sector": "IT"
"role": [
"developer",
"tester"
]
}
下面的POST请求有效负载应失败,因为角色“飞行员”对于“ IT”部门无效:
{
"name": "first last"
"experience": 10
"sector": "IT"
"role": [
"developer",
"tester",
"pilot"
]
}
有帮助吗?