我正在


  TypeError:ModelBase对象为关键字参数获取了多个值
  '日期'


当我尝试创建“城市”时,在我的测试框架上。



这是我的回溯:

ERROR: test_create_city (app.tests.AppManagementTestCase)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "..tests.py", line 158, in test_create_city
    city_obj = City(user = self.user, category = c, date = datetime.datetime.now(), **data)
TypeError: ModelBase object got multiple values for keyword argument 'date'


和我的代码:

def test_create_city(self):
c = Category(name=self.categories[0]['name'])
c.save()
data = {'vehiclesound': '/assets/sounds/vehicle.ogg', 'vehicleshadow': '', 'maxspeed': 160.0, 'suspensionrestlength': 0.5, 'category': 12L, 'leftpub': '8294092164', 'wheelmodelzscale': 0.7, 'camheight': 2.1, 'speedminturn': 50.0, 'suspensiondeltatime': 0.25, 'crashsound': '/assets/sounds/crash.ogg', 'decel': 40.0, 'camtilt': 90.0, 'turnspeedmin': 20.0, 'path': 'just_testing_path', 'frontrightwheel': '', 'limitlinealpha': '01', 'open': 1, 'id': 35L, 'limitheight': 700L, 'modelzscale': 0.7, 'model_complete': 'http://youbeq.org/models/get.php?file=default_app/model.dae', 'rearleftwheel': '', 'user_id': 1L, 'wheelmodelyscale': 0.7, 'allwheels': 'http://sketchup.google.com/3dwarehouse/download?mid=4bc3b6056f5cd97eb5d8f6f0e9fb0ac&rtyp=ks&fn=taxi_4tires&ctyp=other&prevstart=0&ts=1343322996000', 'limitlinecolor': 'FFFFFF', 'limitcolor': '00ffff', 'gravity': 70.0, 'modelxscale': 0.7, 'limitlinewidth': 2L, 'kms': 9007.25, 'axisdistance': 2.5, 'minaccelstep': 5.0, 'wheelsdistance': 1.0, 'limitalpha': '70', 'turnspeedmax': 60.0, 'traildistance': 10.0, 'suspensionstiffness': 0.5, 'vehicletype': 'car', 'description': 'The City that never sleeps', 'wheelsheight': 0.37, 'vehiclesoundtime': 150.0, 'rollclamp': 50.0, 'accel': 5.0, 'backgroundsoundtime': 150.0, 'wheelmodelxscale': 0.7, 'rightpub': '5607834847', 'key': 'just_testing_key', 'accelstep': 25.0, 'date': None, 'world': 'earth', 'mapiconurl': '', 'vehicleagility': 0.0005, 'footer_large': '/assets/img/new_york.png', 'modelheight': 0.0, 'frontleftwheel': '', 'speedmaxturn': 5.0, 'name': 'New York', 'footer': '/taxi/assets/img/taxi_smarturbia_image_new_york.png', 'suspensiondamping': -0.15, 'rearrightwheel': '', 'crashsoundtime': 150.0, 'vehiclefastsoundtime': 150.0, 'maxrevspeed': 15.0, 'mass': 3000.0, 'backgroundsound': '/assets/sounds/background.ogg', 'published': 1, 'modelyscale': 0.7, 'model': 'http://sketchup.google.com/3dwarehouse/download?mid=128bf1862f1eb56db5d8f6f0e9fb0ac&rtyp=ks&fn=taxi_new_york_chassi&ctyp=other&prevstart=12&ts=1343297355000', 'vehiclefastsound': '', 'rollspring': 0.5, 'steerroll': -1.0}
        print self.user
        try :
            city_obj = City.objects.get(key=self.categories[0]['name'])
            print ("city_already_exists")
        except City.DoesNotExist:
            print ("debug")
            city_obj = City(user = self.user, category = c, date = datetime.datetime.now(), **data)
            city_obj.save()

最佳答案

您的data词典包含'date': None,因此如错误所述,您要传递两次日期,因为您还明确地在关键字参数中传递了日期。

您可能想要执行以下操作:

new_data = {'user': self.user, 'category': c, 'date': datetime.datetime.now()}
data.update(new_data)
city_obj = City(**data)


(请注意,这会修改data词典,如果您不希望这样做,则应首先将其复制。)

10-08 08:51