如何从Django中的基本模型继承和过滤数据?
例如,我的基本模型如下所示:
class Customers(models.Model):
Time_Registered = models.DateField(blank=False)
Number = models.CharField(max_length=500)
Name = models.CharField(max_length=250)
Locations = models.ForeignKey(Locations, on_delete=models.CASCADE)
我要做的是创建另一个模型,其中包含与一个位置有关的客户信息,例如:
Class Canada(Customers):
class Meta:
proxy = True
# filter by Canada'
您可以使用自定义管理器来完成此操作。
您可以根据需要自定义文档中的示例,例如:
class CanadaCustomerManager(models.Manager):
def get_queryset(self):
# Adapt the query to your needs
return super().get_queryset().filter(location__name="Canada")
然后,您将在其中一个模型(Customers
或Canada
)中实例化管理器。
请注意,如果您只想定义自定义管理器,则实际上不需要定义新的代理模型。例如,您可以Customers
像这样在模型中使用它:
class Customers(models.Model):
Time_Registered = models.DateField(blank=False)
Number = models.CharField(max_length=500)
Name = models.CharField(max_length=250)
Locations = models.ForeignKey(Locations, on_delete=models.CASCADE)
from_canada = CanadaCustomerManager()
然后使用它来检索对象:
>>> Customers.from_canada.all()
附带说明一下,使用Django,约定是将模型类声明为单数名词(即Customer
not Customers
)。这是因为,即使db表包含您的所有客户,模型的每个实例也代表一个客户。
此外,属性名称通常是在不使用大写字母的情况下声明的(即time_registered
而不是Time_Registered
)。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句