使用django创建许多对象

我使用的是django-polymorphic,并有一个包含大约8个派生类的基类。 除了当我尝试一次创建多个对象时,它的效果很好,在这种情况下,性能非常差。 我的代码如下所示:

class Parent(PolymorphicModel):
  ...
class DerivedA(Parent):
  ...
class DerivedB(Parent):
  ...

@transaction.commit_on_success
def create_objects()
  for model_class in (DerivedA, DerivedB...):
    instance = model_class(...)
    instance.save()

我也尝试过使用Parent.objects.bulk_create ,但是这对于polymorphic-django不适用,因为它只是创建基础对象而不是子对象。 当我尝试使用每个子模型的bulk_create时,会引发ValueError("Can't bulk create an inherited model")

是否有创建多个多态对象的更有效的方法?


这是在Django管理员中实现的

models.py

class BuildScript(models.Model):
   fields ...bla bla

class POLY_BuildScript(BuildScript):
    class Meta:
        verbose_name = "POLY"
    fields...bla bla

admin.py

#just after the imports (func stands alone)
def save_with_parent_fields(obj):
    obj.build = obj.pbuild
    obj.branch = obj.pbranch
    return obj

class BuildScriptAdmin(admin.ModelAdmin):

    def save_model(self, request, obj, form, change):
        obj.executer = request.user.userprofile
        obj.save()

class POLY_BuildScriptAdmin(BuildScriptAdmin):    
    def save_model(self, request, obj, form, change):
        save_with_parent_fields(obj)
        obj.executer = request.user.userprofile
        obj.save()

来自func的return obj在其他地方使用:)享受

链接地址: http://www.djcxy.com/p/38665.html

上一篇: Creating many objects using django

下一篇: How do I query on two incoming models using the Django ORM?