Como escrever uma visão Django obter CharFields de vários modelos do Django que só podem ser acessados ​​através de relações

votos
0

Consulte os seguintes modelos do 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)

Eu preciso para exibir o modelo passado EducationalQualification) para um determinado estudante em uma grade (um estudante pode ter vários EducationalQualifications).

A grade tem colunas para Nome do estudante, Nome Curto de exame, Nome Curto de Assunto, EducationalQualification.institution, EducationalQualification.from_date, EducationalQualification.to_date, e EducationalQualification.marks.

Eu fui incapaz de chegar a uma visão Django para obter esses dados (dado um Student.pk)

Alguém poderia me ajudar com algumas idéias?

Saudações.

Publicado 24/03/2009 em 06:50
fonte usuário
Em outras línguas...                            


2 respostas

votos
3

Você só precisa buscar todos os EducationalQualificationobjetos para determinados aluno com todos os seus objetos de relação:

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

E então, em modelo apenas iterar através disso:

{% 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 %}
Respondeu 24/03/2009 em 08:58
fonte usuário

votos
0

Criar uma exibição de banco de dados e um modelo que especifica managed = Falseem sua classe Meta.

Respondeu 20/07/2012 em 17:16
fonte usuário

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more