Python 当我执行TradeRecord.objects.create(**TradeRecord\u data)时,会出现TypeError
在序列化程序中,我重写了create方法:Python 当我执行TradeRecord.objects.create(**TradeRecord\u data)时,会出现TypeError,python,django,django-rest-framework,Python,Django,Django Rest Framework,在序列化程序中,我重写了create方法: class CloudServerPayOrderSerializer(ModelSerializer): class Meta: model = TradeRecord exclude = ( 'id', 'name', 'traderecord_num', 'money', 'balanc
class CloudServerPayOrderSerializer(ModelSerializer):
class Meta:
model = TradeRecord
exclude = (
'id',
'name',
'traderecord_num',
'money',
'balance',
'desc', # 自己生成
)
def create(self, validated_data):
# 先支付 TODO
# 再生成交易记录
user = getUserFormSerializer(self)
# --- 数据
name = "购买云服务器"
traderecord_num = generateTradeRecordNum(userid=user.id)
#order_id = validated_data.pop("order")
#order = Order.objects.get(id=order_id)
order = validated_data.pop("order")
order.order_status = "已支付,未完成"
order.save()
paytype = validated_data.pop("paytype")
money = order.cost
account = Account.objects.get(user=user)
balance = account.balance
desc = "购买云服务器"
traderecord_data = {
"traderecord_num": traderecord_num,
"name":name,
"order": order,
"money": money,
"balance": balance,
"paytype":paytype,
"desc":desc,
}
traderecord = TradeRecord.objects.create(**traderecord_data)
return traderecord
但是当我执行traderecord=traderecord.objects.create(**traderecord\u data)
行时,我得到TypeError:
在/api/userfront\u product/cloudserver/order/pay/init()获得意外的关键字参数“paytype” 当调试
traderecord=traderecord.objects.create(**traderecord\u data)
步骤时,我使用debug对其进行测试:
我还复制了数据:
{'paytype': '支付宝', 'order': <Order: 用户名:
vcpus:1核
ram:1G
系统盘:SSD40GB
数据盘:SSD0GB
1M
>, 'money': Decimal('220.00'), 'name': '购买云服务器', 'traderecord_num': 'TRN15113262838882', 'desc': '购买云服务器', 'balance': Decimal('0.00')}
我认为traderecord_的数据非常好,但是为什么会出现类型错误呢 出现此错误是因为您已重写了
TradeRecord。\uuuu init\uuuu
,删除该错误,您的模型将正常工作
class TradeRecord(models.Model):
traderecord_num = models.CharField(unique=True, max_length=32, help_text="交易记录编号")
name = models.CharField(max_length=64, help_text="交易记录名称")
order = models.OneToOneField(to=Order, null=True , related_name="traderecord", help_text="对应的订单")
money = models.DecimalField(
decimal_places=2, default=0.0, max_digits=8, help_text="交易记录金额"
) # 正:代表账户入款 负:出款
balance = models.DecimalField(
decimal_places=2, default=0.0, max_digits=8, help_text="此交易结束后的余额"
)
paytype = models.CharField(max_length=16, help_text="支付方式")
desc = models.CharField(max_length=128, help_text="此交易记录的描述")
ctime = models.DateTimeField(auto_now_add=True, help_text="此交易记录的时间") # 创建时间
uptime = models.DateTimeField(auto_now=True) # 更新时间
def __init__(self):
return self.desc
def __unicode__(self):
return self.desc