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

2024-04-25 05:17:05 发布

您现在位置:Python中文网/ 问答频道 /正文

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)

models.py

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

管理员

class ShopCartAdmin(admin.ModelAdmin):
    list_display = ['user','Food','price','quantity','amount']
    list_filter = ['user']

admin.site.register(ShopCart,ShopCartAdmin)

我在尝试输入admin.py时出错。你们能帮帮我吗


Tags: selftruereturnfoodonmodelsdefdelete
1条回答
网友
1楼 · 发布于 2024-04-25 05:17:05

失败的原因是self.Food可以是NULL(所以None),在这种情况下,self.Food.price当然会失败

您可以保护它不受None的影响,因此,在这种情况下,例如返回None

@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

这就是说,最好将字段设为非-nullable,并查看数据库,因为某种原因,Food列实际上是NULL

相关问题 更多 >