2015-01-17 64 views
0

当父属性为true时,我需要一个类(继承),因此何时需要查找子类,将所有包含此属性的属性设置为true。 之后,我将需要在管理面板中使用这个新类并作为外键。例如:CustomerServices基于属性值的Django模型继承是可能的吗?

看到代码:

class Person(models.Model): 
    name = models.CharField(max_length=200) 
    active = models.BooleanField(default=True) 
    customer = models.BooleanField(default=False) 
    employee = models.BooleanField(default=False) 
    vendor = models.BooleanField(default=False) 
    def __str__(self): 
     return self.name 

class People(Person): 
    registration_number = models.CharField(max_length=14) 
    birth_date = models.DateField() 
    sex = models.CharField(max_length=1) 

class Company(Person): 
    registration_number = models.CharField(max_length=20) 
    foundation_date = models.DateField(blank=True, null=True) 
    class Meta: 
     ordering = ["name"] 

class Customer(Person): 
    # I want to consider all Person object with customer=True 

# I need this working and available in the Django Admin like others classes 
class CustomerService(Customer): 
    service_name... 
    service_qtty... 
    service_price... 
    ... 
+0

任何其他地方是的,这是可能的,但看起来像不好的设计决策。你想解决什么样的问题? – catavaran

回答

0

你并不需要有一个单独的模型。您可以从Person类中提取所有客户。即Person.objects.filter(customer = True)。 添加django的ObjectManagers的性感,你可以做类似的事情。

class PersonManager(models.Manager): 
    def customers(self): 
     return self.filter(customer = True) 

class Person(models.Model): 
    ... 
    objects = PersonManager() 
在你的意见

再或者你可以这样调用它

customers = Person.objects.customers()