関係だけを介してアクセスすることができ、複数のDjangoモデルのCharFieldsを得るために、Djangoのビューの書き方

StackOverflow https://stackoverflow.com/questions/676267

質問

次のDjangoのモデルをご参照ください: -

class Student(models.Model):
    reference_num = models.CharField(max_length=50, unique=True)
    name = models.CharField(max_length=50)
    birthdate = models.DateField(null=True, blank=True)
    is_active = models.BooleanField(db_index=True)

class Examination(models.Model):
    short_name = models.CharField(max_length=20, unique=True)
    name = models.CharField(max_length=50, unique=True)
    is_active = models.BooleanField(db_index=True)

class Subject(models.Model):
    short_name = models.CharField(max_length=20, unique=True)
    name = models.CharField(max_length=50, unique=True)
    is_active = models.BooleanField(db_index=True)

class EducationalQualification(models.Model):
    student = models.ForeignKey(Student)
    examination = models.ForeignKey(Examination)
    subject = models.ForeignKey(Subject, null=True, blank=True)
    institution = models.CharField(max_length=50)
    from_date = models.DateField(null=True, blank=True)
    to_date = models.DateField()
    marks = models.DecimalField(max_digits=5, decimal_places=2)

私は(学生が複数のEducationalQualificationsを持つことができます)、グリッド内の指定された学生のための最後のモデル「EducationalQualification)を表示する必要があります。

グリッドは、「学生の名前」の欄、「検査のショートネーム」、「件名のショートネーム」、「EducationalQualification.institution」、「EducationalQualification.from_date」、「EducationalQualification.to_date」、および「EducationalQualificationを持っています。マーク」。

私は、このデータを取得するために、Djangoのビューを思い付くことができなかった(Student.pkを与えられた)。

誰かがいくつかのアイデアで私を助けていただけますか?

よろしくます。

役に立ちましたか?

解決

あなただけのすべての関係オブジェクトを特定の学生のためのすべてのEducationalQualificationオブジェクトを取得する必要があります:

def view_qualifications(request, student_id):
    qs = EducationalQualification.objects.filter(student__pk=student_id).\
                           select_related("student", "examination", "subject")
    # ...

そして、テンプレートにちょうどそれthrought繰り返すます:

{% for q in qs %}
<tr>
   <td>{{q.student.name}}</td>
   <td>{{q.examination.short_name}}</td>
   <td>{{q.subject.short_name}}</td>
   <td>{{q.institution}}</td>
   <td>{{q.from_date}}</td>
   <td>{{q.to_date}}</td>
   <td>{{q.marks}}</td>
</tr>
{% endfor %}

他のヒント

データベースビューと、それはメタクラスの中でmanaged = Falseを指定するモデルを作成します。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top