Django User matching query does not exist on foreign-key relation
Я пытаюсь создать систему на django, в которой пользователь будет входить в систему через номер телефона. Использовал AbstractBaseUser для использования номера в качестве идентификатора пользователя. Теперь я пытаюсь создать связь внешнего ключа каждой транзакции с номером. Когда я пытаюсь протолкнуть транзакцию, появляется сообщение "User matching query does not exist". Я понял, где я допустил ошибку.
Модель пользователя:
class User(AbstractBaseUser, PermissionsMixin):
phone_number = models.CharField("Phone number", max_length=100, unique=True, error_messages={
'unique': ("number_existsssss"),
})
name = models.TextField("Name")
time_stamp = models.DateTimeField("Time-Date", auto_now=True)
request_type = models.CharField(max_length=100, default="check"
is_staff = models.BooleanField(verbose_name=('staff status'), default=False)
is_active = models.BooleanField(verbose_name=('active'), default=True)
Модель транзакции:
class TransactionModel(models.Model):
trxID = models.CharField(max_length=15, null=True, unique=True)
User = models.ForeignKey(to=User, to_field="phone_number", related_name='transaction', on_delete=models.DO_NOTHING, default=1)
time = models.DateTimeField(auto_now=True, null=True)
amount = models.CharField(max_length=5, null=True)
pay_method = models.CharField(max_length=10, null=True)
amountReceivedFrom = models.CharField(max_length=26, null=True)
transactionStatus = models.CharField(max_length=15, null=True, default='False')
просмотр для запроса add-cash/b-kash:
class BkashCashinView(APIView):
@transaction.atomic
def post(self, request, *args, **kwargs):
HEADERS = {
"Access-Control-Allow-Origin": "*"
}
if request.method == 'POST':
serializer = BkashCashinSerializer(data = request.data)
# serializer.is_valid()
req = request.data
trx_id = req.get('trxID')
print(trx_id)
phone_number = req.get('phone_number')
recharge_amount = float(req.get('amount'))
number_exists = User.objects.filter(phone_number=phone_number).exists()
user = User.objects.get(phone_number=phone_number)
print(user)
current_user_data = User.objects.select_for_update().get(phone_number=phone_number)
# current_user_data = User.objects.get(phone_number=phone_number)
with transaction.atomic():
current_user_data.current_balance += recharge_amount
current_user_data.save()
print("phone numbe", req.get("amount"))
serializer.is_valid(raise_exception=True)
current_balance = current_user_data.current_balance
context = {
"current_balance": current_balance,
"status": "success"
}
serializer.save()
# print(trx_id)
return Response(context, headers = HEADERS)
Мне кажется, что я допустил какую-то ошибку в отношении внешнего ключа. ошибка показывает:
raise self.model.DoesNotExist(
user_signup.models.User.DoesNotExist: User matching query does not exist.
[04/Sep/2021 18:44:22] "POST /add-cash/b-kash HTTP/1.1" 500 20728