Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/359.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/19.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 - Fatal编程技术网

Python “非类型”对象没有属性“价格”

Python “非类型”对象没有属性“价格”,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):

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):
        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