我想知道在调用带有位置参数的模型时,字段是否有明确的顺序?
让我们以标准教程为例:
class Poll(models.Model):
question = models.CharField(max_length=200)
pub_date = models.DateTimeField('date published')
创建对象的标准方法是使用关键字参数,但我也可以这样做。
newPoll = Poll(123, "What is your favorite color?", timezone.now())
在这种情况下,值按以下顺序分配给字段:“id”、“question”和“pub_date”
我的问题是 Django 如何将这些位置参数映射到模型的字段变量?如果这里有一致的逻辑,那么我可以在模型类或 manager.create 方法中使用位置参数? (这可能不是一个好主意,仅用于学术目的)
我曾尝试阅读 Django 源代码中的 base.py 文件,但由于我刚刚开始使用 Django,因此需要一些时间才能理解所有内容。因此,如果有人可以解释这一点,那就太好了。
请您参考如下方法:
The documentation仅将创建方法称为 create(**kwargs),因此我认为位置参数是未记录的行为,对于可维护代码而言不可靠。在我的 Django 版本中,这正是 QuerySet 的源代码所说的,所以位置参数将不起作用,除非有一些我没有看到的魔法,但它可能与您的版本不同。
