문제

Django의 Contenttype 프레임 워크를 사용하여 My 모델에 대한 일반적인 관계를 만들기 위해 노력하고 있습니다. Django 개발자가 어떻게하는지 살펴본 후 django.contrib.comments.models 나는 그들의 접근/컨벤션을 모방 할 것이라고 생각했다.

~에서 django.contrib.comments.models, 21 행) :

content_type   = models.ForeignKey(ContentType,
        verbose_name='content type',
        related_name="content_type_set_for_%(class)s")
object_pk      = models.TextField('object ID')
content_object = generic.GenericForeignKey(ct_field="content_type", fk_field="object_pk")

그것은 그들의 출처에서 가져 왔고, 물론 그들의 출처는 저를 위해 작동합니다 (나는 Object_pk의 저장된 잘 저장된 댓글이 있습니다 (실제로 정수). 그러나 나는 그 동안 오류가 발생합니다. syncdb 끝나는 테이블 생성에서 :

_mysql_exceptions.OperationalError: (1170, "BLOB/TEXT column 'object_pk' used in key specification without a key length")

그들이 할 수있는 이유와 나는 할 수없는 아이디어가 있습니까?

주위를 둘러 보면, 나는 그것을 알아 차렸다 문서 실제로 상태 :

모델에 관련된 모델에서 1 차 키 값을 저장할 수있는 필드를 제공하십시오. (대부분의 모델의 경우, 이것은 정수 필드 또는 긍정적 인 integerfield를 의미합니다.)

이 필드는 일반적인 관계에 관여 할 모델의 주요 키와 동일한 유형. 예를 들어, Integerfield를 사용하는 경우 Charfield를 기본 키로 사용하는 모델과 일반적인 관계를 형성 할 수 없습니다.

그러나 왜 그들이 나를 할 수 있습니까?!

감사.

추신 : 나는 심지어이 세 필드로 AbstractBaseModel을 만들어 냈습니다. abstract=True 그리고 그것을 사용 (그것과 관련이있는 경우) ... 같은 오류.

도움이 되었습니까?

해결책

그 정말 긴 질문을 입력 한 후에 나는 mySQL을보고 오류가 다음과 같은 것을 깨달았습니다.

class Meta:
    unique_together = (("content_type", "object_pk"),)

분명히, 나는 두 가지 방법을 가질 수 없습니다. 나를 찢어 버린다. 나는 내 떠나는 것이 더 나은지에 대한 새로운 질문을 열어야 할 것입니다. object_pk 옵션이 열리거나 (텍스트 필드를 기본 키로 사용한다고 가정하거나) unique_togetherness...

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top