Google app engine 如何在Python中动态创建实例的名称

Google app engine 如何在Python中动态创建实例的名称,google-app-engine,python-2.7,Google App Engine,Python 2.7,我当前的系统要求是我有一个主对象,我有多个行项目,我的数据结构是这样的,我在一个类对象中有主信息,在不同的类对象中有每一行项目,并将它们存储在数据存储中 因此,为了存储行项目数据,我必须根据用户通过表单数据提交的行项目数量从类中创建每个对象 我正在尝试用下面的代码创建动态对象的名称 (litm+str(i)) = t_det() 其中t_det()是我在运行时尝试为其创建名为(litm+str(i))的对象的类,其中“litm”是常量部分,str(i)将是名称的动态生成部分,我希望类似于lit

我当前的系统要求是我有一个主对象,我有多个行项目,我的数据结构是这样的,我在一个类对象中有主信息,在不同的类对象中有每一行项目,并将它们存储在数据存储中

因此,为了存储行项目数据,我必须根据用户通过表单数据提交的行项目数量从类中创建每个对象

我正在尝试用下面的代码创建动态对象的名称

(litm+str(i)) = t_det()
其中t_det()是我在运行时尝试为其创建名为(litm+str(i))的对象的类,其中“litm”是常量部分,str(i)将是名称的动态生成部分,我希望类似于litm1、litm2、litm3、litm4

但是当我使用上面的代码时,我得到了下面的错误,并且不确定如何获得适合我当前需求的Python

(litm+str(i)) = t_det()
SyntaxError: can't assign to operator
我被困在这里,不知道现在如何为我获得正确的python代码,有什么帮助吗

@Tkingovr请求的类代码

t_det(db.Model):              # Tendet Details table   
td_id = db.StringProperty()     # Tender ID, Master table ref
td_ln = db.IntegerProperty()    # Line Number
td_item = db.StringProperty()   # Item
td_itm_qty = db.FloatProperty() # Number Item Quantity  
td_itm_uom = db.StringProperty()# Unit of the Quantity specified
tr_ln_qt_amt= db.FloatProperty()# Line Quote Amount
tr_ln_app = db.StringProperty() # Line Quote Approved  

您是否尝试动态设置实体名称,元素将在该名称下存储在数据存储中

目前的API无法直接实现这一点,但我采用了以下解决方法:

classCache = {}
def generateExpandoClass( className ):
    """Creates a new Appengine Expando Class which operates on the collection specified by className.

    @type className: String
    @param className: Name of the collection
    @returns: An Appengine NDB.Expando Class
    """
    global classCache
    if not className in classCache.keys():
            classCache[ className ] = new.classobj( className, ( Expando,), {})
    return( classCache[ className ] )
(有关完整代码,请参阅) 此函数使用新模块()在运行时创建一个新的ndb.expando类,该类将其数据保存到给定的实体类中

警告:此方法适用于ext.db-因为所有操作都是使用类(class.all(),class.get())完成的-因此保证当前实例在获取实体时知道该类。
但是,在NDB中,get()是使用Key类执行的。如果您在新创建的实例上执行此操作,并且不为之前尝试获取的类调用generateExpandoClass,NDB将严重失败。

是否可以包含t_det()类的代码?为什么要执行此操作?这是一个奇怪的请求,我相信有更好的方法来解决您的实际问题。@Greg我只是在尝试一个功能,例如,我们有一个订单,订单将有标题详细信息和行项目,每个订单将有多行。因此,标题详细信息存储在不同的类对象中,行项目存储在不同的类对象中,其中在上述ex:t_det()类中是行项目详细信息类。因此,我想动态创建实例变量名,该变量名等于顺序中的行数,使用这些名称创建实例,并在存储html表单中的所有行项目详细信息后将实例存储在数据存储中。我认为使用列表会更好