Вы можете сделать это sh, используя настраиваемый менеджер .
. Вы можете настроить пример из документации в соответствии со своими потребностями, например:
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
, а не Customers
). Это связано с тем, что каждый экземпляр модели представляет одного клиента, хотя в таблице БД содержатся все ваши клиенты.
Более того, имена атрибутов обычно объявляются без использования заглавных букв (то есть time_registered
вместо Time_Registered
).