我希望能够通过指定相关对象的主键来构造一个新的django对象,而不是将那些相关对象加载到内存中以传递给模型的构造函数。这可能吗?是否存在一个模型创建工厂或类似的工厂,该工厂可以构造底层SQL,而无需实际将对象加载到内存中?
例子:
class ObjectChildEntity(models.Model):
myobject = models.ForeignKey(MyObject)
some_data = models.TextField(null=False,blank=False)
related_stuff = models.ForeignKey(StuffModel)
我希望能够做这样的事情:
new_child_entity= django.db.models.new(ObjectChildEntity, myobject__id = 123, some_data='foo', related_stuff__id = 456)
这当然不是一个真正的方法,但是我要避免的是避免将MyObject
ID 123的StuffModel
实例加载到内存中,而将ID 456的实例加载到内存中只是为了将这两个对象传递给ObjectChildEntity
构造函数。
是否有类似的东西可以用于Django对象创建而无需滚动我自己的自定义SQL?
使用通常的模型类构造函数和_id
名称,而不是__id
像您的外键id的示例代码中那样的链式关系,这应该可以很好地工作:
new_child_entity = ObjectChildEntity(myobject_id=123, some_data='foo', related_stuff_id=456)
new_child_entity.save()
或者,如果您已经覆盖了db_column
模型字段声明中的字段,则使用该名称代替myobject_id
。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句