장고에서 포럼 스레드를 디자인하려고합니다. 사용자는 스레드를 게시하거나 스레드에 응답하거나 다른 스레드 응답에 응답 할 수 있습니다 (예 : Reddit 설명). 모든 게시물은 날짜와 저자와 같은 기본 정보를 공유하므로 추상적 인 Post
클래스를 만들 것이라고 생각했습니다. 모든 게시물들이 회신되는 parent
게시물을 가질 수 있기 때문에, 내 직감을 시도하고 추상 클래스에 정의했다 :Django Model - 자기 계발을위한 추상 클래스
class Post(models.Model):
content = models.TextField(max_length=1000)
parent = models.ForeignKey('self', null=True)
createdBy = models.ForeignKey(User)
class Meta:
abstract = True
class Thread(Post):
title = models.CharField(max_length=200)
class ThreadReply(Post):
score = models.IntegerField(default=0)
그러나 결과는 자식 클래스는 동일한의 부모를 가질 수 있다는 것입니다 유형은 ThreadReply
이고 실제로는 Thread
또는 상위가 ThreadReply
인 상위 항목을 가질 수 있습니다.
class Post(models.Model):
content = models.TextField(max_length=1000)
createdBy = models.ForeignKey(User)
class Meta:
abstract = True
class Thread(Post):
title = models.CharField(max_length=200)
class ThreadReply(Post):
score = models.IntegerField(default=0)
parentThread = models.ForeignKey(Thread,null=True)
parentReply = models.ForeignKey(ThreadReply,null=True)
하지만 그건 생각하지 않습니다 ... 객체 지향 충분히 : 나는 ThreadReply
둘의 관계를 정의하면 하나의 해결책은 무엇입니까? 모든 ThreadReply
개체는 기능적으로 하나의 낭비 관계를 갖기 때문에 Thread
또는 ThreadReply
에만 회신 할 수 있습니다.
[generic relations] (https://docs.djangoproject.com/en/1.11/ref/contrib/contenttypes/#generic-relations)을보십시오 – dahrens
일반적인 일반적인 관계가 감사합니다. 내가 일할 때 일반 관계 솔루션으로 게시물을 업데이트 할 것입니다. – stackPusher