我该如何解决"ValueError - Cannot serialize"?
How can I solve "ValueError - Cannot serialize"?
我的 Django 项目出现错误。当我 运行 'python manage.py makemigrations' 命令出现错误时。
ValueError: Cannot serialize: <django.db.models.query_utils.DeferredAttribute object at 0x000001B5A3078940>
文件models.py
class Order(models.Model):
product = models.ForeignKey(Product, on_delete=models.CASCADE)
customer = models.ForeignKey(Customer,
on_delete=models.CASCADE, null=True, blank=True)
quntity = models.IntegerField(default=1)
price = models.IntegerField(default=Product.price)
address = models.CharField(max_length=200)
phone = models.CharField(max_length=13)
date = models.DateTimeField(auto_now=True)
print(Product.price)
def __str__(self) -> str:
return self.product.name
文件admin.py
from django.contrib import admin
from .models import Order
# Register your models here.
class OrderAdmin(admin.ModelAdmin):
models = Order
list_display =['product', 'customer', 'quntity', 'price', 'address', 'phone', 'date']
admin.site.register(Order, OrderAdmin)
错误页面
我认为 price 属性有问题。您可以使用 def save(),而不是默认值。
您不能为 default=Product.price
的字段指定默认值
所以改变这一行
price = models.IntegerField(default=Product.price)
到
price = models.IntegerField(default=0)
如果您想从产品价格中设置订单价格,您可以重写 save() 方法
def save(self, *args, **kwargs):
if self.product is not None:
self.price = self.product.price
super().save(*args, **kwargs)
我的 Django 项目出现错误。当我 运行 'python manage.py makemigrations' 命令出现错误时。
ValueError: Cannot serialize: <django.db.models.query_utils.DeferredAttribute object at 0x000001B5A3078940>
文件models.py
class Order(models.Model):
product = models.ForeignKey(Product, on_delete=models.CASCADE)
customer = models.ForeignKey(Customer,
on_delete=models.CASCADE, null=True, blank=True)
quntity = models.IntegerField(default=1)
price = models.IntegerField(default=Product.price)
address = models.CharField(max_length=200)
phone = models.CharField(max_length=13)
date = models.DateTimeField(auto_now=True)
print(Product.price)
def __str__(self) -> str:
return self.product.name
文件admin.py
from django.contrib import admin
from .models import Order
# Register your models here.
class OrderAdmin(admin.ModelAdmin):
models = Order
list_display =['product', 'customer', 'quntity', 'price', 'address', 'phone', 'date']
admin.site.register(Order, OrderAdmin)
错误页面
我认为 price 属性有问题。您可以使用 def save(),而不是默认值。
您不能为 default=Product.price
所以改变这一行
price = models.IntegerField(default=Product.price)
到
price = models.IntegerField(default=0)
如果您想从产品价格中设置订单价格,您可以重写 save() 方法
def save(self, *args, **kwargs):
if self.product is not None:
self.price = self.product.price
super().save(*args, **kwargs)