Джанго ФК с помощью Custom Manager
У меня есть ведомственная структура, где reports
принадлежат к подмножеству Departments
, В этом случае Department
может быть county
и отчет имеет FK для county
,
class Report(models.Model):
user = models.ForeignKey(User)
value = models.IntegerField()
county = models.ForeignKey('Department')
class CountyDepartmentManager(models.Manager):
def get_queryset(self):
return super(CountyDepartmentManager, self).get_queryset().filter(county=True)
class Department(models.Model):
name = models.CharField(max_length=256)
county = models.BooleanField(default=0)
objects = models.Manager()
county_objects = CountyDepartmentManager()
мне бы хотелось Report.county
использовать CountyDepartmentManager()
поэтому в поле выбора Report.county отображаются только графства.
Это вообще возможно, или я должен сделать эти определения в Form
учебный класс?
1 ответ
Ну, я подозреваю, что это невозможно. Кроме того, я предполагаю, что причина в том, что создание нового экземпляра с ограниченным менеджером потребовало бы некоторого отвратительного слесарного дела.
В любом случае, я решил это, создав umnanaged
County
модель.
class County(models.Model):
name = models.CharField(max_length=256)
is_county = models.BooleanField(default=0)
objects = CountyDepartmentManager()
class Meta:
managed = False
db_table = 'department'
Я изначально собирался продлить Department
, но это в конечном итоге делает County.objects.all()
ошибка запроса. Искал department.department_ptr_id
Если у кого-то есть еще информация об этом, я хотел бы услышать это.
РЕДАКТИРОВАТЬ: я смог сделать это, сделав округа модель прокси, который расширяет Департамент.
class County(Department):
objects = CountyDepartmentManager()
class Meta:
proxy = True