0

我有一个部门结构,reports属于Departments. 在这种情况下, aDepartment可以是 a county,并且报告具有 a 的 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课堂上做出这些定义?

4

1 回答 1

0

好吧,我怀疑这是不可能的。此外,我猜原因是使用受限管理器创建一个新实例需要一些丑陋的管道。

无论如何,我通过创建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'

我原本打算 extend Department,但最终导致County.objects.all()查询错误。它在寻找department.department_ptr_id

如果有人对此有更多信息,我很想听听。


编辑:我能够通过使县成为扩展部门的代理模型来做到这一点。

class County(Department):
    objects = CountyDepartmentManager()

    class Meta:
        proxy = True
于 2016-02-01T14:54:28.370 回答