django多对一,三张表之间的关系
def index(request):
user_name = request.session.get('user')
user = User.objects.filter(account=user_name).first()
print(user)
if user:
gradee = Grade.objects.filter(name=user.user_grade).first()
coursee = Course.objects.filter(grade=gradee.id).all()
print(gradee)
else:
grade = Grade.objects.all()
course = Course.objects.all()
return render(request,'index.html',locals())
def logout(request):
del request.session['user']
return redirect('/')
def add_grade(request):
if request.method == 'POST':
name = request.POST.get('name')
if not name:
error = '输入框不能为空!'
return render(request,'add_grade.html',locals())
else:
grade = Grade.objects.all()
if len(grade) >= 3:
error = '年级添加完毕!'
return render(request,'add_grade.html',locals())
else:
Grade.objects.create(name=name)
return redirect('/')
return render(request,'add_grade.html')
def add_course(request):
grade = Grade.objects.all()
if request.method == 'POST':
name = request.POST.get('name')
gid = request.POST.get('grade')
print(gid)
grade = Grade.objects.get(id=gid)
if not all([name,gid]):
error = '输入框不能为空!'
return render(request,'add_course.html',locals())
else:
course = Course.objects.all().count()
if course >= 9:
error = '所有课程已添加完毕!'
return render(request,'add_grade.html',locals())
else:
Course.objects.create(name=name,grade=grade)
return redirect('/')
return render(request,'add_course.html',locals())
def add_user(request):
grade = Grade.objects.all()
if request.method == 'POST':
name = request.POST.get('name')
account = request.POST.get('account')
password = request.POST.get('password')
user_grade = request.POST.get('grade')
if not all([name,account,password,user_grade]):
error = '输入框不能为空!'
return render(request,'add_user.html',locals())
else:
User.objects.create(name=name,account=account,password=password,user_grade=user_grade)
return redirect('/')
return render(request,'add_user.html',locals())
def login(request):
if request.method == 'POST':
account = request.POST.get('account')
password = request.POST.get('password')
if not all([account,password]):
error = '输入框不能为空!'
return render(request,'login.html',locals())
else:
user = User.objects.filter(account=account,password=password).first()
if user:
request.session['user'] = account
return redirect('/')
else:
error = '用户名或密码错误,请重新输入!'
return render(request,'login.html',locals())
return render(request,'login.html')
def up_grade(request):
user_name = request.session.get('user')
user = User.objects.filter(account=user_name).first()
if user:
grade_name = user.user_grade
print(grade_name)
if grade_name == '小班':
user.user_grade = "中班"
user.save()
elif grade_name == '中班':
user.user_grade = "大班"
user.save()
return redirect('/')
<html>
{% if user_name %}
<h4>{{ user_name }}小朋友</h4>
<a href="/logout/">退出</a><br /><br />
{{ gradee }}
{% for c in coursee %}
{{ c.name }}
{% endfor %} <br /><br />
{% if user.user_grade != '大班'%}
<a href="/up_grade/"><button>点击提升班级</button></a>
{% endif %} {% else %}
<a href="/add_grade/">添加年级</a><br />
<a href="/add_course/">添加课程</a><br />
<a href="/add_user/">添加用户</a><br />
<a href="/login/">用户登录</a><br />
<table border="1px">
<tr>
<th>年级</th>
<th colspan="3">课程</th>
</tr>
{% for g in grade %}
<tr>
<td>{{ g.name }}</td>
{% for c in course %} {% if c.grade.id == g.id %}
<td>{{ c.name }}</td>
{% endif %} {% endfor %}
</tr>
{% endfor %}
</table>
{% endif %}
</body>