Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/23.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 Django中的所有模型基本上都有分配给对象变量的init构造函数吗_Python_Django - Fatal编程技术网

Python Django中的所有模型基本上都有分配给对象变量的init构造函数吗

Python Django中的所有模型基本上都有分配给对象变量的init构造函数吗,python,django,Python,Django,假设我有这样的东西 class Album(models.Model): artist = models.CharField(max_length=128, unique=True) title = models.CharField(max_length=128, unique=True) 现在我能做到了 inst = Album(artist="Shania Twain",title="blah") 由于我没有研究模型类是如何在引擎盖下创建的,我很好奇所有的模型类是否也有一

假设我有这样的东西

class Album(models.Model):
    artist = models.CharField(max_length=128, unique=True)
    title = models.CharField(max_length=128, unique=True)
现在我能做到了

inst = Album(artist="Shania Twain",title="blah")
由于我没有研究模型类是如何在引擎盖下创建的,我很好奇所有的模型类是否也有一个init构造函数?比如说

class Album(models.Model):
    artist = models.CharField(max_length=128, unique=True)
    title = models.CharField(max_length=128, unique=True)
    def __init__(self,artist):
            Album.artist = artist
            ..........
            ..........

请告诉我这是否合理。

是的,但不建议覆盖它

你可以这样做。但不推荐这样做

    def __init__(self, name, email, password, *args, **kwargs):
        super(models.Model, self).__init__(*args, **kwargs)
        self.name = name
        self.email = email
        # or whatever you want
来自Django docs

您可能会试图通过覆盖init来定制模型 方法。但是,如果您这样做,请注意不要更改呼叫 签名,因为任何更改都可能阻止模型实例 拯救

如果要添加字段或执行其他操作,请尝试在模型中添加create方法

from django.db import models

class Book(models.Model):
    title = models.CharField(max_length=100)

    @classmethod
    def create(cls, title):
        book = cls(title=title)
        # do something with the book
        return book

book = Book.create("Pride and Prejudice")