2012-11-15 2 views
0

나는 stackoverflow가 사용하는 것과 유사한 태그 시스템을 구축하고 있습니다. 태그는 해당 태그와 연관된 모델 인스턴스 및 이름으로 구성됩니다. 이 유형을 many to many 관계로 선언하는 방법에 대한 문서는 찾을 수 없습니다. 대개 ManyToMany (모델 이름)이지만이 컬렉션에서 원하는 많은 모델이 있습니다. 누구든지 포인터 또는 유용한 리소스가 있습니까?Django 태그 응용 프로그램, 이기종 ManyToMany 관계 정의

+0

태그로 연결하려는 각 모델에 대해 별도의 m2m 관계를 만들면 어떨까요? – j0ker

+0

모델과 태그 모델 사이의 의존 관계를 만들고 싶지 않습니다. 시스템에 새 모델을 추가하면 태그 응용 프로그램에 새 필드를 추가하지 않아도됩니다. – Mike

+0

@Mike'django-taggit' 또는'django-tagging' 또는 자체 코드와 같은 모듈을 사용하고 있습니까? – inigomedina

답변

0

ContentType을 사용하면이 작업을 수행 할 수 있습니다. 해당 페이지의 문서에서 태그를 사용하는 예제도 있습니다. 아마 전형적인 ManyToMany 필드를 사용할 수 없을 것이고, 태그 모델에 ForeignKey가 있고, GenericForeignKey가있는 대신 태그가있는 모델을 생성 할 것입니다.

+0

태그가 달린 항목의 예가 있지만 구현 방법에 대한 제 아이디어는 조금 다를 수 있다고 생각합니다. 예를 들어 'FOO'라는 태그가 있다고 가정 해보십시오. 제안 된 구현에서 태그 'Foo'는 내 테이블에 하나의 항목이됩니다. 이 태그를 참조하는 모든 모델 인스턴스와 다 대다 관계를 포함합니다. 그래서 'FOO'를 참조하는 모든 모델 인스턴스를 찾으려면 Tag.objects.get (name = 'FOO'). references.all() 문서의 버전에서 4 개의 객체가 'FOO' 태그가 있으면 tagged_item 테이블에 4 개의 항목이 있습니다. – Mike

+0

다 대다 관계는 관계의 각면에 외래 키가있는 테이블을 암시 적으로 만듭니다. 기본적으로, 내가 말하는 것은 명시 적으로 대신 해당 테이블을 생성해야한다는 것입니다. 여전히 Tag 테이블을 가질 수 있지만 TaggedItem 테이블도 만들어야합니다. – JeffS