django中的子查询
我有两种型号:django中的子查询,django,subquery,Django,Subquery,我有两种型号: class Professors(models.Model): professors_name = models.CharField('professor', max_length=32, unique=True) class Discipline(models.Model): auditorium = models.IntegerField('auditorium') professors_name = models.ForeignKey(Profess
class Professors(models.Model):
professors_name = models.CharField('professor', max_length=32, unique=True)
class Discipline(models.Model):
auditorium = models.IntegerField('auditorium')
professors_name = models.ForeignKey(Professors)
在以下观点中:
disciplines = Discipline.objects.all()
所以,我有礼堂的数量和教授的姓名id。但我需要的是教授的全名,而不是id。怎么做?Django ORM将始终返回对象,而不是id。你应该有这样的设计
class Professor(models.Model):
name = models.CharField('professor', max_length=32, unique=True)
class Discipline(models.Model):
auditorium = models.IntegerField('auditorium')
professor = models.ForeignKey(Professors)
并使用学科.professor.name
单独检索名称。模型:
# models usually named in the singular
class Professor(models.Model):
professors_name = models.CharField('professor', max_length=32, unique=True)
class Discipline(models.Model):
auditorium = models.IntegerField('auditorium')
# your pointer is to a professor, not to the name
professor = models.ForeignKey(Professor)
鉴于:
# select_related('professor') to avoid a second query when accessing professor
disciplines = Discipline.objects.select_related('professor')
模板:
{% for disc in disciplines %}
{{ disc.auditorium }}: {{ disc.professor.name }}
{% endfor %}
对于值:
Discipline.objects.values('auditorium', 'professor__name')
我使用规程=规程.对象.值('auditorium','rudiction.professor.name'),但它不起作用,因为它不是@Siva的意思。如果使用trictions=trictions.objects.all(),则该查询集中的每个实例都有一个通过trictions.professor.name的教授名称