【发布时间】:2011-11-23 20:50:28
【问题描述】:
我正在从事一个 django 项目,在该项目中我创建了一组三个抽象模型,稍后我将在各种应用程序中使用它们。我遇到的问题是我想通过 ForeignKey 连接这些模型,但 django 告诉我它不能将外键分配给抽象模型。
我当前的解决方案是在我的其他应用程序中实例化类时分配外键。但是,我现在正在为抽象类(书籍和页面)编写一个管理器,并且需要访问这些外键。我基本上想做的是以无状态的方式获取一本书的字数,因此无需将其存储在页面或书籍的字段中。
模型看起来类似于这样:
class Book(models.Models):
name = models.CharField(...)
author = models.CharField(...)
...
class Meta:
abstract = True
class Page(models.Models):
book = models.ForeignKey(Book)
chapter = models.CharField(...)
...
class Meta:
abstract = True
class Word(models.Models):
page = models.ForeignKey(Page)
line = models.IntegerField(...)
...
class Meta:
abstract = True
请注意,这里的这个模型只是为了举例说明我正在尝试做的事情,因此不需要这个模型(Book-Page-Word)从实现的角度来看是否有意义。
【问题讨论】:
标签: django-models foreign-keys abstract-class