Джанго ФК с помощью 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 ответ

Ну, я подозреваю, что это невозможно. Кроме того, я предполагаю, что причина в том, что создание нового экземпляра с ограниченным менеджером потребовало бы некоторого отвратительного слесарного дела.

В любом случае, я решил это, создав umnanagedCounty модель.

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
Другие вопросы по тегам