2012-11-23 196 views
0

我正在處理遺留數據庫,並且在將一個表中的外鍵連接到另一個表中的主鍵時遇到了一些問題。我會很感激任何幫助。下面是模型和我的shell +錯誤。提前致謝。在Django外鍵的ValueError(無效文字爲int()與基數10)

型號:

class SectionMaster(models.Model): 
    . . . 
    crs_cde = models.ForeignKey('SectionSchedules', max_length=30, db_column=u'CRS_CDE', related_name='sm_crs_cde') 
    . . . 

class SectionSchedules(models.Model): 
    . . . 
    crs_cde = models.CharField(max_length=30, db_column=u'CRS_CDE') 
    . . . 

錯誤:

>>> q = SectionMaster.objects.filter(trm_cde=20).filter(yr_cde=2012) 
>>> q2 = SectionSchedules.objects.filter(trm_cde=20).filter(yr_cde=2012) 
>>> for course in q: 
...  for course2 in q2: 
...   if course.crs_cde == course2.crs_cde: ## also tried course.crs_cde_id 
...    print course.crs_cde, course.crs_title, course2.begin_dte 
... 
Traceback (most recent call last): 
    File "<console>", line 3, in <module> 
    File "C:\Python27\lib\site-packages\django\db\models\fields\related.py", line 
350, in __get__ 
    rel_obj = qs.get(**params) 
    File "C:\Python27\lib\site-packages\django\db\models\query.py", line 358, in g 
et 
    clone = self.filter(*args, **kwargs) 
    File "C:\Python27\lib\site-packages\django\db\models\query.py", line 624, in f 
ilter 
    return self._filter_or_exclude(False, *args, **kwargs) 
    File "C:\Python27\lib\site-packages\django\db\models\query.py", line 642, in _ 
filter_or_exclude 
    clone.query.add_q(Q(*args, **kwargs)) 
    File "C:\Python27\lib\site-packages\django\db\models\sql\query.py", line 1250, 
in add_q 
    can_reuse=used_aliases, force_having=force_having) 
    File "C:\Python27\lib\site-packages\django\db\models\sql\query.py", line 1185, 
in add_filter 
    connector) 
    File "C:\Python27\lib\site-packages\django\db\models\sql\where.py", line 69, i 
n add 
    value = obj.prepare(lookup_type, value) 
    File "C:\Python27\lib\site-packages\django\db\models\sql\where.py", line 320, 
in prepare 
    return self.field.get_prep_lookup(lookup_type, value) 
    File "C:\Python27\lib\site-packages\django\db\models\fields\__init__.py", line 
972, in get_prep_lookup 
    return super(IntegerField, self).get_prep_lookup(lookup_type, value) 
    File "C:\Python27\lib\site-packages\django\db\models\fields\__init__.py", line 
310, in get_prep_lookup 
    return self.get_prep_value(value) 
    File "C:\Python27\lib\site-packages\django\db\models\fields\__init__.py", line 
966, in get_prep_value 
    return int(value) 
ValueError: invalid literal for int() with base 10: '0BJ 226 1 
    ' 

回答

2

我希望你想在ForeignKey上使用to_field='crs_cde'來告訴它查看目標表的crs_cde字段的值,而不是(整數)主鍵。

+0

輝煌。這工作完美。非常感謝! –

0

檢查你列crs_cde_id - 它應該是在數據庫int類型。但似乎你在那裏有字符。

+0

感謝您的回覆。不幸的是,我的數據庫似乎沒有crs_cde_id列。 –

相關問題