我Beta
的模型的舞台字段提供了 5 个选项。我希望我的序列化程序不总是接受所有这些选择,而是根据序列化对象的实际阶段值只接受其中一些选择。例如,如果my_beta_object.stage == 1
,那么序列化程序应该期望(并提供)只有阶段 2 和 3,如果my_beta_object.stage == 2
,只有阶段 2 和 4,等等。
# models.py
class Beta(models.Model):
class BetaStage(models.IntegerChoices):
REQUESTED = (1, "has been requested")
ACCEPTED = (2, "has been accepted")
REFUSED = (3, "has been refused")
CORRECTED = (4, "has been corrected")
COMPLETED = (5, "has been completed")
stage = models.ChoiceField(choices=self.BetaStage.choices)
# serializers.py
class BetaActionSerializer(serializers.ModelSerializer):
stage = serializers.ChoiceField(
# choices=?
)
class Meta:
model = Beta
fields = ("stage",)
# views.py
class BetaViewSet(viewsets.ModelViewSet):
serializer_class = BetaSerializer
def get_serializer_class(self):
if self.action == "update":
return BetaActionSerializer
return self.serializer_class
如何根据序列化对象的字段值动态限制该字段的选择?