2016-07-05 7 views
0

У меня есть 3 таблицы следующим образом. Таблица пользователей имеет информацию о студенте. В таблице LecMst есть информация о лекции. И в таблице LecReq записаны данные лекции, которые учащиеся зарегистрировали.Как получить значение объекта внешнего ключа?

models.py

class User(models.Model):  
    usn = models.CharField(max_length=20, primary_key=True, verbose_name='usn') 
    nm = models.CharField(max_length=50, blank=True, null=True, verbose_name='name') 
    userid = models.CharField(max_length=20, blank=True, null=True, verbose_name='ID') 

class LecMst(models.Model): 
    leccode = models.CharField(max_length=15, null=False, primary_key=True, verbose_name='lecture_code') 
    lecname = models.CharField(max_length=100, null=True, verbose_name='lecture_name') 

class LecReq(models.Model): 
    leccode_id = models.ForeignKey(LecMst, db_column='leccode', verbose_name='lecture_code', related_name = 'lecreqs') 
    usn_id = models.ForeignKey(User, db_column='usn', verbose_name='usn', related_name = 'lecreqs') 

students_by_lecture.html показывает список студентов в конкретном классе. И страница, на которой я хочу показать имя студента, и имя лекции, кроме leccode_id, usn_id.

lectures.py

def student_list_by_lecture(request): 

    qs_leccode = request.GET['leccode'] 

    if qs_leccode: 

     qs = LecReq.objects.filter(leccode_id=qs_leccode) 

     paginator = Paginator(qs, 25) # Show 25 posts per page 
     page = request.GET.get('page') 
     try: 
      lecture_members = paginator.page(page) 
     except PageNotAnInteger: 
      lecture_members = paginator.page(1) 
     except EmptyPage: 
      lecture_members = paginator.page(paginator.num_pages) 

    return render(request, 'students_by_lecture.html', { 
     'lecture_members' : lecture_members, 
     'qs_leccode' : qs_leccode, 
    }) 

Ниже students_by_lecture.html Что я могу ввод ????.

<table> 
    <thead> 
     <tr> 
      <th>Lecture Code</th> 
      <td>Lecture Name</td> 
      <td>Student Name</td> 
      <td>Student No (usn)</td> 
     </tr> 
    </thead> 
    <tbody>{% for member in lecture_members %} 
     <tr> 
     <td>{{ member.????? }}</td> 
     <td>{{ member.????? }}</td> 
     <td>{{ member.????? }}</td> 
     <td>{{ member.????? }}</td> 
     </tr>{% endfor %} 
    </tbody> 
</table>        
+1

Мне не очень ясно, что именно вы хотите сделать. – Wtower

+0

Я добавил students_by_lecture.html. Можете ли вы снова проверить вопрос? Я хочу напечатать имя лекции и имя студента, зарегистрированное в конкретной лекции. –

ответ

1

связанные объекты могут быть легко доступен как:

{{ member.leccode_id.lecname }} 

Дополнительная информация о Django Docs: Lookups that span relationships.

Также обратите внимание, что ваше соглашение об именах строго говорит неправильно. Вы должны называть поле его именем, leccode, а не leccode_id, так как теперь для доступа к идентификатору объекта вы должны использовать leccode_id_id.

+0

Спасибо. Ваш комментарий был для меня огромной помощью. –

0

Вы можете получить доступ к иностранной модели объекта непосредственно как model.foreign_model_field.field

Так что попробуйте.

Для имени лекции попробовать: {{}} member.leccode_id.lecname Для имени студента попробовать: {{}} member.usn_id.nm

+0

Спасибо за ваш ответ. ^^ –

1

Итак, я предполагаю, что вы пытаетесь получить это:

для каждой лекции печати, студент (имя и номер), зарегистрированный в этой лекции вместе с кодом лекции.

lectures_info = LecReq.objects.prefetch_related('leccode_id', 'usn_id') 

for lecture in lectures_info: 
    print lecture.leccode_id.leccode 
    print lecture.leccode_id.lecname 
    print lecture.usn_id.nm 
    print lecture.usn_id.userid 

Это, по-видимому, является аспект запроса, который, вероятно, отвечая на ваш вопрос: как получить доступ к ключевой области иностранных. Пожалуйста, попробуйте манипулировать им в соответствии с вашим требованием или прокомментировать, чтобы я мог помочь вам в дальнейшем.

Надеюсь, это поможет :)

+0

Спасибо за ваш комментарий. ^^ –

 Смежные вопросы

  • Нет связанных вопросов^_^