كيفية كتابة وجهة نظر جانغو للحصول CharFields نماذج جانغو المتعددة التي يمكن الوصول إليها إلا من خلال العلاقات

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

سؤال

ويرجى الاطلاع على نماذج جانغو التالية: -

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 في انها من الدرجة ميتا.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top