كيفية كتابة وجهة نظر جانغو للحصول CharFields نماذج جانغو المتعددة التي يمكن الوصول إليها إلا من خلال العلاقات
-
21-08-2019 - |
سؤال
ويرجى الاطلاع على نماذج جانغو التالية: -
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)
وأحتاج لعرض نموذج آخر "EducationalQualification) لطالب معين في الشبكة (الطالب يمكن أن يكون تأهيل تربوي متعددة).
والشبكة أعمدة ل"اسم الطالب"، "الاسم المختصر للفحص"، "الاسم المختصر من الموضوع"، "EducationalQualification.institution"، "EducationalQualification.from_date"، "EducationalQualification.to_date"، و "EducationalQualification. علامات ".
ولقد كنت غير قادر على الخروج بهدف جانغو للحصول على هذه البيانات (إعطاء Student.pk)
ويمكن للشخص الرجاء مساعدتي مع بعض الأفكار؟
والتحيات.
المحلول
وتحتاج فقط لجلب كافة الكائنات EducationalQualification
لطالب معين مع كافة الكائنات علاقتها:
def view_qualifications(request, student_id):
qs = EducationalQualification.objects.filter(student__pk=student_id).\
select_related("student", "examination", "subject")
# ...
وبعد ذلك في قالب مجرد تكرار الفكر فيه:
{% 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
في انها من الدرجة ميتا.