2011-01-11 4 views
0

방금 ​​자신 만의 앱 자습서 (설문 조사 작성)를 만드는 것으로 시작합니다. 이미 존재하는 자체 데이터베이스 모델을 사용하여 앱을 만들고 싶습니다.django 기본 모델 설정 변경

그리고 튜토리얼이

  • 테이블 이름이 자동으로 의 이름 응용 프로그램 (여론 조사)와 모델의 소문자 이름을 결합하여 생성 말합니다 - 설문 조사 및 선택. (이 동작을 무시할 수 있습니다.)
  • 기본 키 (ID)는 에 자동으로 추가됩니다. this도 역시 무시할 수 있습니다.
  • Django는 약식으로 "_id"를 외래 키 필드 이름에 추가합니다. 예, 이것을 무시할 수 있습니다 ( ).

그러나이 동작을 재정의 할 수있는 방법을 어디에서 언급 할 수 있습니까? 내가 쉘에 가서 지금 때 나는 이것이 내가 실제로 채널을 불리는으로

>>> from tvlistings.models import * 
>>> Channels.objects.all() 
Traceback (most recent call last): 
    File "<console>", line 1, in <module> 
    File "C:\Python26\lib\site-packages\django\db\models\query.py", line 67, in __ 
repr__ 
    data = list(self[:REPR_OUTPUT_SIZE + 1]) 
    File "C:\Python26\lib\site-packages\django\db\models\query.py", line 82, in __ 
len__ 
    self._result_cache.extend(list(self._iter)) 
    File "C:\Python26\lib\site-packages\django\db\models\query.py", line 271, in i 
terator 
    for row in compiler.results_iter(): 
    File "C:\Python26\lib\site-packages\django\db\models\sql\compiler.py", line 67 
7, in results_iter 
    for rows in self.execute_sql(MULTI): 
    File "C:\Python26\lib\site-packages\django\db\models\sql\compiler.py", line 73 
2, in execute_sql 
    cursor.execute(sql, params) 
    File "C:\Python26\lib\site-packages\django\db\backends\util.py", line 15, in e 
xecute 
    return self.cursor.execute(sql, params) 
    File "C:\Python26\lib\site-packages\django\db\backends\mysql\base.py", line 86 
, in execute 
    return self.cursor.execute(query, args) 
    File "C:\Python26\lib\site-packages\MySQLdb\cursors.py", line 166, in execute 
    self.errorhandler(self, exc, value) 
    File "C:\Python26\lib\site-packages\MySQLdb\connections.py", line 35, in defau 
lterrorhandler 
    raise errorclass, errorvalue 
DatabaseError: (1146, "Table 'tvlistings.tvlistings_channels' doesn't exist") 

은 분명히이 테이블 tvlistings_channels을 찾을 수없는 무엇을 얻을 그래서

from django.db import models 

# Create your models here. 
class Channels(models.Model): 
    channelid = models.IntegerField() 
    channelid.primary_key = True 
    channelname = models.CharField(max_length=50) 

나의 모델을 정의했습니다. 그러면 기본값을 어떻게 변경합니까?

답변

3

당신은 크게 inner Meta class

  • db_table의 사용을 통해 장고 모델 동작을 무시할 수는 기본 키가 그것보다는 그것을 사용하는 것입니다 당신이 다른 필드를 지정하는 테이블 이름
  • 의 이름을 변경 할 수 있습니다
+0

딱! :영형) – PDStat

1

당신이 시도하고 일을 사용자 정의하기 전에 당신이 시도하고 모든 튜토리얼을 통해 귀하의 방법을 작동합니다 (안 Meta 클래스, 단지 모델 자체에) 대리 키를 누릅니다. 이 모든 것들을 은 실제 문서에 포함 된입니다.하지만 그 전에 잠시 생각하기 전에 먼저 기본적인 것을 이해하는 것이 가장 좋습니다.

FWIW, defining your own primary keyspecifying a table name의 문서는 다음과 같습니다. 그러나 실제로, 먼저 튜토리얼을 작성하십시오.