0

私は2つのモデルを持っています:

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()

だから、私は講堂とprofessors_name_idの数を持っています。しかし、IDではなく、完全な教授名が必要です。どうやってするの?

4

2 に答える 2

1

モデル:

# 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')
于 2012-10-19T17:49:52.587 に答える
1

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)

discipline.professor.name名前だけを取得するために使用します。

于 2012-10-19T17:11:23.107 に答える