使用Django中的一个按钮创建Model的多个对象

时间:2013-02-23 17:15:08

标签: python django

我想解决我的问题,我正在寻找答案,但我找不到任何解决方案。

假设我有一个模型:

class AccessCode(models.Model):
    access_code = models.CharField(max_length=100, verbose_name='Access code',
    unique=True, default=key_generator)
    def __str__(self):
        return self.access_code
    def __unicode__(self):
       return self.access_code

只有一个领域。我喜欢做的是在管理面板中创建额外的按钮,并使用此按钮在我的数据库中自动创建100个AccessCodes。 所以有两个问题:

  1. 如何在管理面板中创建自定义按钮以执行某些操作?
  2. 如何一步自动创建某个模型的100个对象?
  3. key_generator是我的自定义函数,用于生成随机字符串作为默认值。

1 个答案:

答案 0 :(得分:1)

您可以使用Django 1.4中引入的bulk_create方法,

AccessCode.objects.bulk_create([AccessCode() for i in range(100)])

然而,这种方法存在一些问题,来自django doc

  

但是有一些警告:

- The model’s save() method will not be called, and the pre_save and post_save signals will not be sent.
- It does not work with child models in a multi-table inheritance scenario.
- If the model’s primary key is an AutoField it does not retrieve and set the primary key attribute, as save() does.

要向管理页面添加操作,请查看this answer,详细了解如何操作。