2013-05-13 80 views
-6

这里是回溯更新代码ValueError异常:无效与基座10字面INT():

类基料(models.Model): CREATED_BY = models.ForeignKey(用户,默认= User.pk,related_name =“(app_label)s _%(class)s_creator”) created_by = models.ForeignKey(User,default = User.pk,related_name =“(app_label)s _%(class)s_editor”) created_at = models.DateTimeField(auto_now_add = TRUE) modified_at = models.DateTimeField(auto_now_add = TRUE)

class Meta: 
abstract = True 

class Department(Base): 
dept_id = models.AutoField(primary_key=True) 
name = models.CharField(max_length=60, unique=True) 
description = models.TextField() 

def __unicode__(self): 
return str(self.name) 



--------------------------------------------------------------------------- 
ValueError Traceback (most recent call last) 
C:\python27\lib\site-packages\django-1.5-py2.7.egg\django\core\management\commands\shell.pyc in <module>() 
----> 1 test = Department.objects.create(name='test',description='test') 

C:\python27\lib\site-packages\django-1.5-py2.7.egg\django\db\models\manager.pyc in create(self, **kwargs) 
147 
148 def create(self, **kwargs): 
--> 149 return self.get_query_set().create(**kwargs) 
150 
151 def bulk_create(self, *args, **kwargs): 

C:\python27\lib\site-packages\django-1.5-py2.7.egg\django\db\models\query.pyc in create(self, **kwargs) 
412 obj = self.model(**kwargs) 
413 self._for_write = True 
--> 414 obj.save(force_insert=True, using=self.db) 
415 return obj 
416 

C:\python27\lib\site-packages\django-1.5-py2.7.egg\django\db\models\base.pyc in save(self, force_insert, for 
ce_update, using, update_fields) 
544 
545 self.save_base(using=using, force_insert=force_insert, 
--> 546 force_update=force_update, update_fields=update_fields) 
547 save.alters_data = True 
548 

C:\python27\lib\site-packages\django-1.5-py2.7.egg\django\db\models\base.pyc in save_base(self, raw, cls, or 
igin, force_insert, force_update, using, update_fields) 
648 
649 update_pk = bool(meta.has_auto_field and not pk_set) 
--> 650 result = manager._insert([self], fields=fields, return_id=update_pk, using=using, ra 
w=raw) 
651 
652 if update_pk: 

C:\python27\lib\site-packages\django-1.5-py2.7.egg\django\db\models\manager.pyc in _insert(self, objs, field 
s, **kwargs) 
213 
214 def _insert(self, objs, fields, **kwargs): 
--> 215 return insert_query(self.model, objs, fields, **kwargs) 
216 
217 def _update(self, values, **kwargs): 

C:\python27\lib\site-packages\django-1.5-py2.7.egg\django\db\models\query.pyc in insert_query(model, objs, f 
ields, return_id, raw, using) 
1671 query = sql.InsertQuery(model) 
1672 query.insert_values(fields, objs, raw=raw) 
-> 1673 return query.get_compiler(using=using).execute_sql(return_id) 
1674 
1675 

C:\python27\lib\site-packages\django-1.5-py2.7.egg\django\db\models\sql\compiler.pyc in execute_sql(self, re 
turn_id) 
934 self.return_id = return_id 
935 cursor = self.connection.cursor() 
--> 936 for sql, params in self.as_sql(): 
937 cursor.execute(sql, params) 
938 if not (return_id and cursor): 

C:\python27\lib\site-packages\django-1.5-py2.7.egg\django\db\models\sql\compiler.pyc in as_sql(self) 
892 for f in fields 
893 ] 
--> 894 for obj in self.query.objs 
895 ] 
896 else: 

C:\python27\lib\site-packages\django-1.5-py2.7.egg\django\db\models\fields\related.pyc in get_db_prep_save(s 
elf, value, connection) 
1045 else: 
1046 return self.rel.get_related_field().get_db_prep_save(value, 
-> 1047 connection=connection) 
1048 
1049 def value_to_string(self, obj): 

C:\python27\lib\site-packages\django-1.5-py2.7.egg\django\db\models\fields\__init__.pyc in get_db_prep_save(
self, value, connection) 
302 """ 
303 return self.get_db_prep_value(value, connection=connection, 
--> 304 prepared=False) 
305 
306 def get_prep_lookup(self, lookup_type, value): 

C:\python27\lib\site-packages\django-1.5-py2.7.egg\django\db\models\fields\__init__.pyc in get_db_prep_value 
(self, value, connection, prepared) 
546 def get_db_prep_value(self, value, connection, prepared=False): 
547 if not prepared: 
--> 548 value = self.get_prep_value(value) 
549 value = connection.ops.validate_autopk_value(value) 
550 return value 

C:\python27\lib\site-packages\django-1.5-py2.7.egg\django\db\models\fields\__init__.pyc in get_prep_value(se 
lf, value) 
553 if value is None: 
554 return None 
--> 555 return int(value) 
556 
557 def contribute_to_class(self, cls, name): 

ValueError: invalid literal for int() with base 10: '<property object at 0x000000000332AB38>' 
+5

您需要修复代码的缩进缩进。在Python中它不是可选的! – ThiefMaster 2013-05-13 07:46:03

+4

此外,您发布的代码根本不会调用int()。哪条线触发了错误?请发布整个回溯。 – 2013-05-13 07:50:13

+0

保存时test.save() – user1708597 2013-05-13 08:00:13

回答

0

必须提供当你创建一个部门时,你可以使用user。您可以访问以当前用户为request.user,如果你是在一个视图

user = request.user 

或从数据库中获取的任何用户,如果你是在外壳测试

user = User.objects.get(id=1) # get 

然后创建department

department = Department(name='test', 
         description='test', 
         user=user, 
         ) 

最后,您的default=User.pk不正确。对于用户实例,您可以访问user.pk,但类属性User.pk不是您认为的当前用户的pk。

+0

我刚刚更新了模型.. – user1708597 2013-05-13 09:22:08

+0

它看起来好像你已经做出了我向你推荐的任何更改。 1.创建部门时必须指定用户。 2.你必须从'Department.user'字段中删除'default = User.pk',因为它没有任何意义。 – Alasdair 2013-05-13 10:50:13

相关问题