2013-05-13 3 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.pk, 관련 이름 = "(app_label) s _ % (클래스) s_editor") created_at = models.DateTimeField (auto_now_add = 참) modified_at = models.DateTimeField (auto_now_add = 참)

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

코드의 엉성한 들여 쓰기를 수정해야합니다. 파이썬에서는 옵션이 아닙니다! – ThiefMaster

+4

또한 게시 한 코드는'int() '를 전혀 호출하지 않습니다. 오류를 일으키는 라인은 무엇입니까? 전체 추적을 게시하십시오. –

+0

저장할 때 test.save() – user1708597

답변

0

당신은 제공해야합니다 부서를 만들면 user입니다.

: 당신은 쉘에서 테스트하는 경우

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

는 다음 department을 만들 당신이 경우보기

user = request.user 

request.user로 현재 사용자에 액세스하거나 데이터베이스에서 사용자를 가져올 수 있습니다

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

마지막으로 default=User.pk이 잘못되었습니다. 사용자 인스턴스의 경우 user.pk에 액세스 할 수 있지만 클래스 속성 User.pk은 현재 사용자의 pk가 아닌 것으로 생각할 수 있습니다.

+0

방금 ​​모델을 업데이트했습니다. – user1708597

+0

제안한 변경 사항 중 하나를 수행 한 것처럼 보이지 않습니다. 1. 부서를 만들 때 사용자를 지정해야합니다. 2.'Department.user' 필드에서'default = User.pk'를 제거해야합니다. 왜냐하면 아무 의미가 없기 때문입니다. – Alasdair

관련 문제