как получить доступ ко всем полям других моделей с помощью внешнего ключа в django

#django #django-models #django-templates

#django #django-модели #django-шаблоны

Вопрос:

я хочу зарегистрировать студента и хочу получить информацию о студенте из модели студента и информацию о курсе из моделей курса. студент и курс — это отдельные приложения. как я получаю список имен студентов и список курсов в режиме регистрации

вот код

Модель курса

 class course(models.Model):
    course_name = models.CharField(max_length=30)
    course_fee = models.IntegerField(default=3000)
    cr_hrs = models.IntegerField(default=2)

    def __str__(self):
        return self.course_name
  

Модель Student

 class student(models.Model):
    first_name = models.CharField(max_length=20)
    last_name = models.CharField(max_length=20)
    father_name = models.CharField(max_length=30)
    dob = models.DateField()
    image = models.ImageField(upload_to='images/', null=True)
    phone_number = models.BigIntegerField()
    email = models.EmailField(unique=True, null=True)


    def __str__(self):
        return self.first_name
  

Зарегистрировать модель

 from course.models import course
from student.models import student
class enroll(models.Model):
    student = models.ForeignKey(student, on_delete=models.CASCADE)
    course = models.ManyToManyField(course)
    enroll_date = models.DateField()
    enrolled_by = models.ForeignKey(User, on_delete=models.CASCADE)
    fee_paid = models.BooleanField(default=False)
  

Зарегистрироваться для просмотра

 def create(request):
    enrolled = enroll.objects
    if request.method == 'POST':
        if request.POST['student'] and request.POST['course']:
            enrolled = enroll()
            enrolled.student = request.POST['student']
            enrolled.course = request.POST['course']
            enrolled.enrolled_by = request.user
            enrolled.save()
            return redirect('/enroll/list')

        else:

            return render(request, 'enroll/create.html', {'error': 'All fields are requried.'})
    else:

        return render(request, 'enroll/create.html', {'enrolled':enrolled})
  

html-файл

 <form class="needs-validation" novalidate method="POST" action="{% url 'enroll_create' %}" enctype="multipart/form-data" name="student_form">
      {% csrf_token %}
       <select class="form-control" name="student">
         {% for enroll in enrolled.all %}
          <option value="{{enroll.student.first_name}}" >{{enroll.student.first_name}} {{enroll.student.last_name}}</option>
          {% endfor%}
        </select>
        <select class="form-control" name="course" >
          {% for enroll in enrolled.all %
           <option value="{{enroll.course.course_name}}" >{{enroll.course.course_name}}</option>
           {% endfor%}
         </select>
         <button class="btn btn-primary btn-lg btn-block" type="submit">Register</button>
     </form>
  

я получил только первое имя в списке имен и ничего в курсах

Комментарии:

1. Вау, ваш проект выглядит великолепно, но, к сожалению, я не могу настроить проблему. Надеюсь, вы скоро получите некоторую помощь.

2. @FarrukhSarmad Спасибо 🙂