【发布时间】:2018-01-04 16:27:53
【问题描述】:
我正在尝试构建自己的客户端数据库,但我只是无法进行反向查找:
models.py
class PersonQuerySet(models.QuerySet):
def employees(self):
return self.filter(role='E')
class PersonManager(models.Manager):
def get_queryset(self):
return PersonQuerySet(self.model, using=self._db)
def employees(self):
return self.get_queryset().employees()
class Person(models.Model):
people = PersonManager()
role = models.CharField(max_length=1,
choices = (('C', _('Client')),('E', _('Employee'))))
class Organization(models.Model):
employees = models.ManyToManyField(
Employee,
limit_choices_to=Q(role='E'),
related_name='organization_employees',
related_query_name='organization_employee',)
views.py
class PersonDetail(DetailView):
model = Person
template_name = 'clients/person_detail.html'
Organization-Class 通过多对多关系与多个员工(Person-Class)相关联。每个员工的DetailView(模板“person_detail.html”)现在可以显示每个员工所属的组织,我想像person.organization.name这样的东西
我已经尝试过这个和许多其他解决方案,但到目前为止它从未奏效,我只是不明白为什么我被卡住了。
<ul>
{% for organization in people.organization_set.all %}
{{ organization.name }}
{% endfor %}
</ul>
非常感谢您的帮助:)
【问题讨论】:
-
people来自哪里?您显示的 PersonDetail 视图不会添加该变量。你的意思是person吗? -
人来自“Person-Class”:people = PersonManager()。我用它来调用额外的 Employee-Class: class Employee(Person) 像这样:people.employee。但我认为在这种情况下我应该使用 person.organization_set.all。你说得对。但这也不行。
标签: python django django-models django-templates django-views