0
我写了一个特定的函数,我希望我所有的Django模型都有。使我的所有模型从某个类继承的最佳方式是什么?使所有的Django模型都继承自某个类
我试过的东西没有用。我做了一个新的阶级是这样的:
from django.db import models
class McifModel(models.Model):
pass
然后我在另一个模型做:
from django.db import models, connection, transaction
from mcif.models.mcif_model import McifModel
class Customer(mcif.models.McifModel):
id = models.BigIntegerField(primary_key=True)
customer_number = models.CharField(unique=True, max_length=255)
social_security_number = models.CharField(unique=True, max_length=33)
name = models.CharField(unique=True, max_length=255)
phone = models.CharField(unique=True, max_length=255)
deceased = models.IntegerField(unique=True, null=True, blank=True)
do_not_mail = models.IntegerField(null=True, blank=True)
created_at = models.DateTimeField()
updated_at = models.DateTimeField()
但我得到这个错误:
Traceback (most recent call last):
File "./import.py", line 6, in <module>
from mcif.models import GenericImport, Customer, CSVRow
File "/home/jason/projects/mcifdjango/mcif/models/__init__.py", line 4, in <module>
from mcif.models.account_address import AccountAddress
File "/home/jason/projects/mcifdjango/mcif/models/account_address.py", line 2, in <module>
from mcif.models.account import Account
File "/home/jason/projects/mcifdjango/mcif/models/account.py", line 2, in <module>
from mcif.models.customer import Customer
File "/home/jason/projects/mcifdjango/mcif/models/customer.py", line 4, in <module>
class Customer(mcif.models.McifModel):
NameError: name 'mcif' is not defined
在处理Django中的继承时应该小心。除非父类声明为抽象,否则每次查询从其继承的子类时,数据库都将执行JOIN,这可能会影响性能。如果你只需要它们全部共享一个函数,你最好将父模型声明为抽象的,这样会给你相同的功能但性能更好。 – 2011-02-01 22:01:17