稍后添加按钮观看或参加

时间:2016-04-16 19:51:13

标签: django

现在我有一个用户表,课程表, 我创建了2张桌子,参加,稍后观看 其中有一对多的用户和多对多的课程 我希望当用户按下参加时,课程将被添加到用户= user,

参加表格

models.py

class Course_Attendance_sheet(models.Model):
  person = models.ForeignKey(settings.AUTH_USER_MODEL, default=None, blank=None, null=True)
  course = models.ManyToManyField(Course_dir, default=None, blank=None, null=True)
class Course_dir(models.Model):
  id_CO = models.ForeignKey(Specialization, on_delete=models.CASCADE, default=None)
  name = models.CharField(max_length=100)

views.py

def attend(request,*args, **kwargs):
  request.session.set_expiry(0)
  course_id = request.GET.get("course")
  if course_id:
    course_instance = get_object_or_404(Course_dir, id=course_id)
  attend_id, attend = Course_Attendance_sheet.objects.get_or_create(person =request.user, course= course_instance)
  attend_id.save()

/ attend-done /的UnboundLocalError 本地变量' course_instance'在分配之前引用 我确定表格是正确的,我通过管理面板添加数据,如何使用html

<form id='add-form' method='GET' action="{% url 'courses.views.attend' %}">
                                        <input id='submit-btn' type='submit' value='Attend' class='btn btn-default' />
                                    </form>

1 个答案:

答案 0 :(得分:1)

您的if语句可能会返回False,在这种情况下,Course_instance未定义。您应该添加例外或else分支。我会这样做:

def attend(request,*args, **kwargs):
  request.session.set_expiry(0)
  course_id = request.GET.get("course")
  if course_id:
    course_instance = get_object_or_404(Course_dir, id=course_id)
    attend_id, attend = Course_Attendance_sheet.objects.get_or_create(person =request.user, course= course_instance)
    attend_id.save()
  else:
    print('What happened to this course?')

请注意缩进更改。