Как использовать модели Django с перечислением в REST API?
Я использую модель User для хранения данных пользователя:
class User(models.Model):
MEMBERSHIP_BRONZE = 'B'
MEMBERSHIP_SILVER = 'S'
MEMBERSHIP_GOLD = 'G'
MEMBERSHIP_CHOICES = [
(MEMBERSHIP_BRONZE, 'Bronze')
(MEMBERSHIP_SILVER, 'Silver')
(MEMBERSHIP_GOLD, 'Gold')
]
name = models.CharField(max_length=255)
email = models.EmailField(unique=True)
phone = models.CharField(max_length=255)
membership = models.CharField(max_length=1, choices=MEMBERSHIP_CHOICES, default=MEMBERSHIP_BRONZE)
Когда клиент создается с помощью post api, я хочу разрешить только эти три значения Bronze для MEMBERSHIP_BRONZE, Silver для MEMBERSHIP_SILVER и Gold для MEMBERSHIP_GOLD в поле членства. Когда пользователь выбирает варианты членства lebel из ui, мне нужно вставить соответствующее значение. Я не знаю, как это сделать?
serializer.py
class UserSerializer(serializers.ModelSerializer):
class Meta:
model = User
fields = ["name", "email", "phone", "membership"]
views.py
@api_view(["GET", "POST", "PUT"])
def userActions(request):
if request.method == "GET":
users = User.objects.all()
serializer = UserSerializer(users, many=True)
res = serializer.data
if request.method == "POST":
name = request.POST.get("name")
email = request.user.email
phone = request.POST.get("phone")
membership = request.POST.get("membership")
user = User.objects.create(name=name, email=email, phone=phone, membership=membership)
serializer = UserSerializer(user)
res = serializer.data
return res