1 回答

TA贡献1799条经验 获得超9个赞
是的,你做的工作比你需要的多得多。
您应该使用SlugRelatedField定义您的字段,以允许 DRF 从相关模型上的字段自动填充它们。所以:
class FirewallPolicyCreateSerializer(serializers.ModelSerializer):
team = serializers.SlugRelatedField(queryset=Team.objects.all(), slug_field='name')
source_ip = serializers.SlugRelatedField(queryset=IP.objects.all(), slug_field='source_ip')
destination_ip = serializers.SlugRelatedField(queryset=IP.objects.all(), slug_field='destination_ip')
class Meta:
model = Policy
fields = ['id', 'name', 'team', 'source_ip', 'destination_ip']
现在您不需要定义validate或根本不需要定义create,因为 DRF 将完成所有相关的验证和分配。
(请注意,您也不需要重新定义该name字段,因为您不会更改底层模型字段的任何内容。)
添加回答
举报