Python “非类型”对象没有属性“价格”
models.pyPython “非类型”对象没有属性“价格”,python,django,Python,Django,models.py class ShopCart(models.Model): user = models.ForeignKey(User, on_delete=models.SET_NULL, null=True) Food = models.ForeignKey(food, on_delete=models.SET_NULL, null=True) quantity = models.IntegerField() def __str__(self):
class ShopCart(models.Model):
user = models.ForeignKey(User, on_delete=models.SET_NULL, null=True)
Food = models.ForeignKey(food, on_delete=models.SET_NULL, null=True)
quantity = models.IntegerField()
def __str__(self):
return self.Food
@property
def amount(self):
return (self.quantity * self.Food.price) #adminde göstermek için tutar
@property
def price(self):
return (self.Food.price)
管理员
class food(models.Model):
STATUS = (
('True', 'Evet'),
('False', 'Hayır'),
)
category = models.ForeignKey(Category, on_delete=models.CASCADE) #Category modeli ile ilişkili
title = models.CharField(max_length=150)
keywords = models.CharField(blank=True,max_length=255)
description = models.CharField(blank=True,max_length=255)
image = models.ImageField(blank=True, upload_to='images/')
price = models.FloatField()
amount = models.IntegerField() #miktar
detail = RichTextUploadingField()
slug = models.SlugField(null=False, unique=True)
status = models.CharField(max_length=10, choices=STATUS)
created_at = models.DateTimeField(auto_now_add=True)
update_at = models.DateTimeField(auto_now=True)
def __str__(self):
return self.title
我在尝试输入admin.py时出错。你们能帮帮我吗?之所以失败是因为self.Food可以为空,所以没有,在这种情况下,self.Food.price当然失败了 您可以防范None,例如,在这种情况下返回None:
class ShopCartAdmin(admin.ModelAdmin):
list_display = ['user','Food','price','quantity','amount']
list_filter = ['user']
admin.site.register(ShopCart,ShopCartAdmin)
也就是说,最好将字段设置为不可空,并查看数据库,其中由于某种原因,食品列确实为空。self.Food可以为空,因此没有,然后它就没有价格。那么我该怎么办呢?
@property
def amount(self):
if self.Food_id is None:
return `None`
return self.quantity * self.Food.price
@property
def price(self):
if `self.Food_id is not None:
return self.Food.price