0
我想在時間上使用Django並將其插入令人興奮的PostgreSQL數據庫中。 我用python manage.py inspectdb
提取我的數據庫的模型,但是當我想要同步我的數據庫我有這樣的錯誤:Django多對多的relionships
CommandError: One or more models did not validate:
api.subdomain: Accessor for field 'sub_domain' clashes with related field 'Domain.subdomain_set'. Add a related_name argument to the definition for 'sub_domain'.
api.subdomain: Accessor for field 'domain' clashes with related field 'Domain.subdomain_set'. Add a related_name argument to the definition for 'domain'.
以下是造成問題的類:
class Domain(models.Model):
id = models.IntegerField(primary_key=True)
extra_data = models.CharField(max_length=127, blank=True)
class Meta:
managed = False
db_table = 'domain'
class SubDomain(models.Model):
sub_domain = models.ForeignKey(Domain)
domain = models.ForeignKey(Domain)
extra_data = models.CharField(max_length=127, blank=True)
class Meta:
managed = False
db_table = 'sub_domain'
我沒有創造與SQLAlchemy的這是我做過什麼,使其工作:
class Domain(Base):
__tablename__ = 'domain'
id = Column(Integer,
primary_key=True,
autoincrement=True)
extra_data = Column(String(127))
sub_domains = relationship("SubDomain",
backref="domain",
primaryjoin="Domain.id == SubDomain.domain_id")
class SubDomain(Base):
__tablename__ = 'sub_domain'
sub_domain_id = Column(Integer,
ForeignKey('domain.id'),
primary_key=True)
domain_id = Column(Integer,
ForeignKey('domain.id'),
primary_key=True)
sub_domain = relationship("Domain",
foreign_keys=[sub_domain_id],
backref="sub_domains_assocs")
extra_data = Column(String(127))
要解釋我的關係:
每個Domain
有多個SubDomain
和每個SubDomain
本身是Domain
,他們的關係是extra_data
的SubDomain
的資格。每個SubDomain
可以有多個父母。每個Domain
在其字段extra_data
中都有自己的規範。
我試過在StackOverflow上找到多個答案,但沒有一個爲我的案件工作。
感謝您的幫助!