Naveen
Naveen

Reputation: 677

Updating Python record in a loop

Code: Models

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)

Usage:

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

Error: 'unicode' object is not callable.

Input: modelName: A2 fields: {u'field1': u'd2d2d2', u'field2': u'e2e2e2', u'field3': u'f2f2f2'} type(fields): 'dict'

Any solution/work around for this please ? Thanks,

Upvotes: 0

Views: 44

Answers (1)

Daniel
Daniel

Reputation: 42748

You have to set attributes:

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)

or simply:

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

Upvotes: 1

Related Questions