Я хочу публиковать данные в поле Bonus из функции, созданной на основе случайного выбора элементов списка
Я пытаюсь сделать api для колеса, которое вращается и мы получаем случайное вознаграждение, поэтому я использую список и функцию random. Я хочу сохранить данные в поле Bonus из функции соответствует случайному выбору if else condition. Я пробовал следующее.
models.py
class Wallet(models.Model):
user = models.ForeignKey(User, null=True, related_name='wallet_mobile', on_delete=models.CASCADE)
total_amount = models.FloatField(_('Total amount'), default=10)
add_amount = models.FloatField(_('Add amount'), default=0)
deposit_cash = models.FloatField(_('Full Add amount'),default=0)
win_amount = models.FloatField(default=0)
winning_cash = models.FloatField(default=0)
withdraw_amount = models.FloatField(default=0)
amount = models.DecimalField(_('amount'), max_digits=10, decimal_places=2, default=10)
description = models.CharField(max_length=200, null=True, blank=True)
Recieved_sreferral = models.CharField(max_length=200, null=True, blank=True)
referral_status = models.BooleanField(null=True, blank=True)
Bonus = models.FloatField(default=0)
serializer.py
class Bonusserializer(serializers.ModelSerializer):
class Meta:
model = Wallet
fields = ['Bonus']
views.py
@api_view(['POST'])
def bonus_money(request, pk):
if request.method == 'POST':
qs = Wallet.objects.get(pk=pk)
serializer = Bonusserializer(qs, data=request.data)
if serializer.is_valid(raise_exception=True):
Bonus = request.data['Bonus']
li = ['5 Rs. Entry ticket','Get Another Spin','50 Rs Bonus', '10% Discount Coupon','20% Extra Referral Bonus','5 Rs Bonus','Better luck next time','10 Rs Bonus']
x = random.choice(li)
if x == li[0]:
qs.Bonus = qs.Bonus + 5
qs.save()
elif x == li[1]:
y = 'Get Another Spin'
return y
elif x == li[2]:
qs.Bonus = qs.Bonus + 50
qs.save()
elif x == li[3]:
y = "10% Discount Coupon"
return y
elif x == li[4]:
y = "Better luck next time"
return y
elif x == li[5]:
qs.Bonus = qs.Bonus + 5
qs.save()
elif x == li[6]:
y = "Better luck next time"
return y
elif x == li[7]:
qs.Bonus = qs.Bonus + 10
qs.save()
obj = Wallet.objects.create(wallet=qs,Bonus = qs.Bonus)
obj.save()
json_data = serializer.data
x = GetResponceSerializer(json_data)
x = {**x.data, **json_data}
return JsonResponse(x, status=status.HTTP_200_OK, safe=False)
else:
return JsonResponse({"status": False, "message": "Something went wrong. Please try again later", },
status=status.HTTP_400_BAD_REQUEST)
Пожалуйста, игнорируйте строки переменной y. Позже я изменю их на результаты типа floatfield.