Django에서 이중 외래 키를 모델링 할 수 있습니까? 오디오, 오버레이, HTML 테이블 : 필드 ID를 가지고 timeline_item, 오디오 지정하는 필드 카테고리, 오버레이, 또는 HTML ...Django의 이중 외래 키?
사람은 알고 있나요 내가 테이블이 있다면 예를 들어
어떻게 장고에서 이것을 모델링 할 것인가? 아니면 가능하다면?Django에서 이중 외래 키를 모델링 할 수 있습니까? 오디오, 오버레이, HTML 테이블 : 필드 ID를 가지고 timeline_item, 오디오 지정하는 필드 카테고리, 오버레이, 또는 HTML ...Django의 이중 외래 키?
사람은 알고 있나요 내가 테이블이 있다면 예를 들어
어떻게 장고에서 이것을 모델링 할 것인가? 아니면 가능하다면?소리가 다형성 연관성과 유사합니다. 아마도 ContentTypes 프레임 워크를 사용하여 장고의 일반적인 관계에 대한 문제를 해결할 수있을 것입니다.
외래 키가 TWO 테이블 사이의 참조 제한 조건이므로 다른 하나의 테이블에서 3 개의 열을 참조하는 열을 하나만 가질 수는 없습니다.
은 다음을 참조하십시오 http://en.wikipedia.org/wiki/Foreign_key이
당신은 어떻게 든 다른 만들 감기, 내가 코드를 입증하는 가장 좋은 것입니다 믿습니다
class Category(models.Model):
TYPES = (
('audio', 'audio'),
('overlay', 'overlay'),
('html', 'html'),
)
type = models.CharField(choices=TYPES)
class Audio(models.Model):
category = models.OneToOneField(Category)
additional_column_for_audio = models. ...
#...
# same for overlay and html
class Item(models.Model):
# id is automatically added
category = models.ForeignKey(Category)
은 다음 항목을 반복 할 수와 같은 것을 수행
{% for item in items %}
{% if item.category.type == "audio" %}
{{ item.category.audio.additional_column_for_audio }}
{% endif %}
{% endfor %}
을
MySQL과 포스트그레스는 모두 다중 테이블 관계를 지원합니다. 나는 평범한 SQL에서 이것을 할 수 있는데, 문제가있는 장고에서 그것을 얻는 방법이다. 나는 당신의 해결책을 좋아하지만, 내가 사용하기를 기대했던 것만 큼 우아하지는 않습니다. – ranman
나는이 사용하던 일을 결국 무엇을 : 나는 단지 자신의 클래스에 필드의 사전을 매핑하고 개체 유형을 반환이 개 외부 키를 필요로하는 클래스에 정의 된 다른 방법을 사용했다 그 전에 http://docs.djangoproject.com/en/1.0/topics/db/models/#id7
을 .
나는 단지 잘못된 단어로 인터넷 검색을하고 있었다고 생각한다. :) 덕분에, 이것으로 작업 할 수있다. – ranman