Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/363.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 钱包交易后如何更改用户和产品(型号)的价值_Python_Django_Postgresql_Wallet - Fatal编程技术网

Python 钱包交易后如何更改用户和产品(型号)的价值

Python 钱包交易后如何更改用户和产品(型号)的价值,python,django,postgresql,wallet,Python,Django,Postgresql,Wallet,这是我的model.py,其中Customer是下订单和购买产品的人 class Customer(models.Model): user = models.OneToOneField(User, null=True, blank=True, on_delete=models.CASCADE) name = models.CharField(max_length=25, null=True) phone = models.CharField(max_length=12,

这是我的model.py,其中Customer是下订单和购买产品的人

class Customer(models.Model):
    user = models.OneToOneField(User, null=True, blank=True, on_delete=models.CASCADE)
    name = models.CharField(max_length=25, null=True)
    phone = models.CharField(max_length=12, null=True)

    def __str__(self):
        return self.name

class Product(models.Model):
    user = models.ForeignKey(User, on_delete=models.CASCADE)
    coinid = models.CharField(max_length=255, null=True)
    digit = models.CharField(max_length=18, null=True)
    ctp = models.FloatField(max_length=100, null=True)
    transection_id = models.IntegerField(null=True, default=0)
    slug = models.SlugField(max_length=250, null=True, blank=True)
    date_created = models.DateField(auto_now_add=True, null=True)

    def __str__(self):
        return self.coinid

    def get_absolute_url(self):
        return reverse("core:detail", kwargs={
        'slug': self.coinid
        })

class Balance(models.Model):
    user = models.ForeignKey(User, on_delete=models.CASCADE)
    balance = models.IntegerField(default=0)

    def __str__(self):
        return self.user.username
在views.py中,我想用发送者从钱包发送金额来替换产品的用户(Product.user)

def buy_c(request, ok):
    ctp_val = Product.objects.get(id=ok)
    msg = "Enter Details"
    if request.method == "POST":
        try:
            username = request.POST["username"]
            amount = request.POST["amount"]
            senderUser = User.objects.get(username=request.user.username)
            receiverrUser = User.objects.get(username=username)
            sender = Balance.objects.get(user=senderUser)
            receiverr = Balance.objects.get(user=receiverrUser)
            sender.balance = sender.balance - float(amount)
            receiverr.balance = receiverr.balance + float(amount) 
            
            if senderUser == receiverrUser:
                return Exception.with_traceback()
            else:
                sender.save()
                receiverr.save()
                msg = "Transaction Success"
                return redirect("/user")
    
        except Exception as e:
            print(e)
            msg = "Transaction Failure, Please check and try again"
    
    context = {"coin": ctp_val, "msg":msg}
    return render(request, 'coinwall.html', context)
以下是我的模板coinwall.html:

<tr>
    <th>username</th>
    <th>Coin Id</th>
    <th>current CTP</th>
    <th>Total Transections</th>
</tr>

<tr>
    <td>{{coin.user}}</td>
    <td>{{coin.coinid}}</td>
    <td>{{coin.ctp}}</td>
    <td>{{coin.transection_id}}</td>
</tr>

{% if msg %}
<br><br>
{{msg}}
{% endif %}
<form method="POST">
    <input type="text" name="username" value="{{coin.user}}" readonly><br><br>

    <input type="text" name="amount" value="{{coin.ctp}}" readonly><br><br>
    <input type="submit" value="Submit">
    {% csrf_token %}
</form>

用户名
硬币Id
当前CTP
总横切面
{{coin.user}
{{coin.coinid}
{{coin.ctp}
{{coin.横切面{u id}}
{%if msg%}


{{msg}} {%endif%}



{%csrf_令牌%}
另外,如果有人能告诉我管理员如何跟踪交易,并在用户失去平衡时限制用户,这将是非常棒的

在views.py中,我想用发送者从钱包发送金额来替换产品的用户(Product.user)

ctp值更新(用户=收款人)
此外,如果有人能(a)告诉我管理员如何跟踪交易,以及(b)如果用户失去平衡,对其进行限制,那将是非常棒的。Thank you=ctp_val.price:#“产品价格”的关键是什么。 #请在这里兑换。 其他: #抛出错误。
谢谢@Felipe,我试过了

ctp_val.update(user=receiverrUser)
产品价值必须具有“更新”属性

然后我试了

ctp_val.user = senderUser
                ctp_val.save()
这对我很有效

在(a)中,我想知道如何获得用户之间的最新数据/横断面详细信息。
谢谢你(b)谢谢你@Felipe,我试过了,ctp_val.update(user=receiverrUser)我修改了我的答案,添加了跟踪交易的可能方法。修改了我以前的答案,以帮助解决(a)问题。