我有这个型号:
class BaseModel(models.Model):
....
class Meta:
abstract = True
class ModelA(BaseModel):
....
class ModelB(BaseModel):
....
class MyExtModel(models.Model)
myfield = models.ForeignKey(BaseModel)
Run Code Online (Sandbox Code Playgroud)
但这不正确,因为我BaseModel喜欢Abstract.事实上,当我尝试makemigration命令时,我有一个错误.
错误是:
ERRORS:
myapp.MyExtModel.myfield: (fields.E300) Field defines a relation with model 'BaseModel', which is either not installed, or is abstract.
Run Code Online (Sandbox Code Playgroud)
有没有办法使用抽象基础模型?
我也试过用:
myfield = models.ForeignKey(BaseModel, related_name="%(app_label)s_%(class)s_related")
Run Code Online (Sandbox Code Playgroud) 我有一个抽象模型和两个子模型,例如:
class Invoice(models.Model):
user = models.ForeignKey("User", related_name='%(class)s')
class Meta:
abstract=True
class SaleInvoice(Invoice):
field_sale = models.CharField(max_length=255)
class PurchaseInvoice(Invoice):
field_purchase = models.CharField(max_length=255)
Run Code Online (Sandbox Code Playgroud)
现在,子模型的反向名称将是saleinvoicesand purchaseinvoices。但我需要的是sale_invoices和purchase_invoices。如何实现这一目标?CamelCase 之间有一个下划线。