Djangi : django.core.exceptions.FieldError: 无法将关键字"email"解析为字段



**我有这样的错误,请帮帮我。django.core.exceptions.FieldError:无法将关键字"email"解析到字段中。选项包括:auth_token、created_at、id、is_verified、nama、order、pengiriman、user、user_id

view.py

def processOrder(request):
id_transaksi = datetime.datetime.now().timestamp()
data = json.loads(request.body)
if request.user.is_authenticated:
customer        = request.user.profile
order, created  = Order.objects.get_or_create(user=customer, selesai=False)

else:
customer, order = gusetOrder(request, data)

total = float(data['form']['total'])
order.id_transaksi = id_transaksi
if total == order.get_cart_total:
order.selesai = True
order.save()
if order.shipping == True:
Pengiriman.objects.create(
user=customer,
order=order,
alamat=data['shipping']['address'],
kota =data['shipping']['city'],
provinsi=data['shipping']['state'],
kode=data['shipping']['zipcode'],
)
return JsonResponse('Payment complete', safe=False)

checkout.html

function submitFormData(){
console.log('Payment button clicked')
var userFormData = {
'name':null,
'email':null,
'total':total,
}
var shippingInfo = {
'address':null,
'city':null,
'state':null,
'zipcode':null,
}
if (shipping != 'False'){
shippingInfo.address = form.address.value
shippingInfo.city = form.city.value
shippingInfo.state = form.state.value
shippingInfo.zipcode = form.zipcode.value
}
if (userau == 'False'){
userFormData.name = form.name.value
userFormData.email = form.email.value
}
console.log('Shipping Info:', shippingInfo)
console.log('User Info:', userFormData)

var url = "/process_Order"
fetch(url, {
method:'POST',
headers:{
'Content-Type':'applicaiton/json',
'X-CSRFToken':csrftoken,
}, 
body:JSON.stringify({'form':userFormData, 'shipping':shippingInfo}),

})
.then((response) => response.json())
.then((data) => {
console.log('Success:', data);
alert('Transaction completed');  
cart = {}
document.cookie ='cart=' + JSON.stringify(cart) + ";domain=;path=/"
window.location.href = "{% url 'store' %}"
})
}

base.html

function getToken(name) {
let cookieValue = null;
if (document.cookie && document.cookie !== '') {
const cookies = document.cookie.split(';');
for (let i = 0; i < cookies.length; i++) {
const cookie = cookies[i].trim();
// Does this cookie string begin with the name we want?
if (cookie.substring(0, name.length + 1) === (name + '=')) {
cookieValue = decodeURIComponent(cookie.substring(name.length + 1));
break;
}
}
}
return cookieValue;
}
const csrftoken = getToken('csrftoken');
故障图片在此处输入图像描述

型号.py

class Profile(models.Model):
user        = models.OneToOneField(User,on_delete=models.CASCADE, blank=True, null=True)
nama        = models.CharField(max_length=200, null=True)
auth_token  = models.CharField(max_length=100)
is_verified = models.BooleanField(default=False)
created_at  = models.DateField(auto_now_add=True)

def __str__(self):
return self.user.username
class Product(models.Model):
name        = models.CharField(max_length=200, null=True)
harga       = models.DecimalField(max_digits=12, decimal_places=3)
digital     = models.BooleanField(default=False, null=True, blank=True)
jumlah      = models.IntegerField(default=0)
image       = models.ImageField(null=True, blank=True)
def __str__(self):
return self.name
@property
def imageURL(self):
try:
url = self.image.url
except:
url = ''
return url

class Order(models.Model):
user        = models.ForeignKey(Profile, on_delete=models.SET_NULL, blank=True, null=True)
order_data  = models.DateTimeField(auto_now_add=True)
selesai     = models.BooleanField(default=False, blank=True, null=True)
id_transaksi = models.CharField(max_length=200, null=True) 
def __str__(self):
return str(self.id)

实用程序.py

def gusetOrder(request, data):
print("User is not logged in")
print('COOKIES:', request.COOKIES)
name = data['form']['name']
email = data['form']['email']
cookieData = cookieCart(request)
items = cookieData['items']
customer, created = Profile.objects.get_or_create(
email=email,
is_verified=True,
auth_token="null",
)
customer.name = name
customer.save()
order = Order.objects.create(
user=customer,
selesai=False,
)
for item in items:
product = Product.objects.get(id=item['product']['id'])
orderItem = OrderItem.objects.create(
product=product,
order=order,
quantity=item['quantity']
)
return customer, order

您的配置文件模型中没有电子邮件,这就是您出现错误的原因。如果你想创建一个对象过滤器用户对象,你可以创建或获得客户

customer, created = Profile.objects.get_or_create(
email=email,  # getting error here.
is_verified=True,
auth_token="null",
)

class Profile(models.Model):
user        = models.OneToOneField(User,on_delete=models.CASCADE, blank=True, null=True)
nama        = models.CharField(max_length=200, null=True)
auth_token  = models.CharField(max_length=100)
is_verified = models.BooleanField(default=False)
created_at  = models.DateField(auto_now_add=True)

def __str__(self):
return self.user.username

解决方案

user = User.objects.filter(email=email).first()
customer, created = Profile.objects.get_or_create(
user=user,
is_verified=True,
auth_token="null",
)

最新更新