【问题标题】:Updating Python record in a loop在循环中更新 Python 记录
【发布时间】:2015-08-30 08:46:08
【问题描述】:

代码: 型号

class A1(models.Model):
    user = models.ForeignKey(User)
    field1 = models.CharField(max_length=200)
    field2 = models.CharField(max_length=200)

class A2(models.Model):
        user = models.ForeignKey(User)
        field1 = models.CharField(max_length=200)
        field2 = models.CharField(max_length=200)
        field3 = models.CharField(max_length=200)

用法:

def insertRecord(modelName, fields, user)
    record = modelName(User=user, **fields)
    record.save()

错误:“unicode”对象不可调用。

输入: 型号名称:A2 字段:{u'field1': u'd2d2d2', u'field2': u'e2e2e2', u'field3': u'f2f2f2'} 类型(字段):'dict'

请为此提供任何解决方案/解决方法? 谢谢,

【问题讨论】:

    标签: python python-2.7 django-models


    【解决方案1】:

    你必须设置属性:

    def insertRecord(modelName, fields, user)
        if modelName == "A1":
            record = A1(User=user)
        else:
            record = A2(User=user)
    
        for field, value in fields.iteritems():
            setattr(record, field, value)
    

    或者简单地说:

    def insert_record(model_name, fields, user):
        cls = A1 if model_name == 'A1' else A2
        return cls(User=user, **fields)
    

    【讨论】:

    • 感谢您的快速回复。这有点帮助。但是现在得到这个错误:'A2'对象没有属性'getitem'@Daniel
    • 那么你的字段参数是什么?
    • 字段参数都是类型:field1 = models.CharField(max_length=200)。我收到 'unicode' object is not callable 错误。更新了上面的代码。 @丹尼尔
    • 有什么建议吗?
    猜你喜欢
    • 1970-01-01
    • 2012-12-30
    • 1970-01-01
    • 2010-10-08
    • 1970-01-01
    • 2016-04-27
    • 2018-10-01
    • 2023-03-27
    • 2021-08-19
    相关资源
    最近更新 更多