Django属性错误:对象没有属性“__state”并从Class中删除__init__

fhg3lkii  于 2023-05-23  发布在  Go
关注(0)|答案(1)|浏览(116)

我正在尝试为Django应用程序“webshop”创建一个模型,但我很难理解我的问题源于何处。
我的models.py是:
从django.db导入模型

class Product(models.Model):

    def __init__(self, title, quantity, description, image_url=""):
        title = models.CharField(max_length=255)

        self.quantity = quantity
        self.title = title
        self.description = description
        self.image_url = image_url
        
    def sell(self):
        self.quantity = self.quantity - 1

我想用它做的是初始化它,像这样:
toy1 = Product(title="Bear plush", description="Fluffy bear plush toy", quantity=10)
我可以用
print(toy1.quantity)print(toy1.title)toy1.sell()等等都可以,但是执行toy1.save()会返回错误

AttributeError: 'Product' object has no attribute '_state'

在谷歌上搜索这个问题时,我发现不建议在这里使用init,但是www.example.com中提供的替代方案https://docs.djangoproject.com/en/1.11/ref/models/instances/#creating-objects都使用了一个逻辑,其中类函数的第一次调用与初始调用不同。
如果我面临的问题是由于依赖__init__,我如何摆脱它,同时仍然能够使用toy1 = Product(title="Bear plush", description="Fluffy bear plush toy", quantity=10)初始化对象,或者我的问题是完全不同的?

rnmwe5a2

rnmwe5a21#

我认为你试图创建的模型应该是这样的:

class Product(models.Model):
    title = models.CharField(max_length=255)
    quantity = models.IntegerField()
    description = models.TextField()
    image_url = models.CharField(max_length=255, validators=[URLValidator()])

    def sell(self):
        self.quantity = self.quantity - 1
        self.save()

Django负责示例化,所以你不需要__init__位。

相关问题