Django创建没有关键字参数的模型实例

时间:2014-12-07 10:33:52

标签: python django arguments instance models

在Django中,如果你想创建一个模型,你可以按如下方式进行:

class SomeModel(models.Model):
    a = models.CharField(max_length=10)
    b = models.CharField(max_length=20)
    c = models.CharField(max_length=30)
    d = models.CharField(max_length=40)
    e = models.CharField(max_length=50)
    f = models.CharField(max_length=60)

现在,如果要在shell中创建实例,则必须执行以下操作:

> abcdef = SomeModel(a="stuff", b="stuff", c="stuff", d="stuff", e="stuff", f="stuff")

如果您必须继续创建具有长属性名称的模型实例,这会非常烦人。有没有办法像普通的Python对象那样简单地发送参数(就像在不必命名变量而只是按顺序发送变量一样)?

像这样:

> abcdef = SomeModel("stuff", "stuff", "stuff", "stuff", "stuff", "stuff")

正如您在 init 函数中使用标准Python类一样。

谢谢:)

这是我的实际Python模型:

class School(models.Model):
    urn = models.CharField(max_length=6)
    name = models.CharField(max_length=100)
    house = models.CharField(max_length=50)
    street = models.CharField(max_length=50)
    county = models.CharField(max_length=50)
    postcode = models.CharField(max_length=8)
    def __unicode__(self):
        return str(
            'URN: ' + self.urn + ', ' +
            'Name: ' + self.name + ', ' +
            'House: ' + self.house + ', ' +
            'Street: ' + self.street + ', ' +
            'County: ' + self.county + ', ' +
            'Postcode: ' + self.postcode + ', '
            )

2 个答案:

答案 0 :(得分:1)

您是否尝试过以下代码:

obj = SomeModel(None, "a_stuff", "b_stuff", "c_stuff", "d_stuff", "e_stuff", "f_stuff")
obj.save()

希望这些有所帮助。

答案 1 :(得分:0)

您可以通过

创建实例
abcdef = SomeModel()

由于实例化不会触及数据库,因此您可以稍后分配值,然后执行.save()