在Django中通过一个按钮创建多个Model对象
我想解决我的问题,我一直在寻找答案,但找不到任何解决方案。
假设我有一个模型:
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)。所以我有两个问题:
- 如何在管理面板里创建一个自定义按钮,让它执行某些操作?
- 如何一步到位自动创建100个某个模型的对象?
key_generator是我自定义的一个函数,用来生成随机字符串作为默认值。
1 个回答
1
你可以使用在Django 1.4中引入的 bulk_create
方法,
AccessCode.objects.bulk_create([AccessCode() for i in range(100)])
不过,这种方法有一些问题,来自Django文档的说明:
不过,这里有一些注意事项:
- 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.
要在管理页面添加操作,请查看 这个回答,里面有详细的做法。