自连接
- 对于地区信息,属于一对多关系,使用一张表,存储所有的信息
- 类似的表结构还应用于分类信息,可以实现无限级分类
- 新建模型AreaInfo,生成迁移
class AreaInfo(models.Model): atitle = models.CharField(max_length=20) aParent = models.ForeignKey('self', null=True, blank=True)
上级对象:area.aParent下级对象:area.areainfo_set.all()
- 加入测试数据(在workbench中,参见“省市区mysql.txt”)
- 在booktest/views.py中定义视图area
from models import AreaInfodef area(request): area = AreaInfo.objects.get(pk=130100) return render(request, 'booktest/area.html', {'area': area})
地区当前地区:{ {area.atitle}}
上级地区:{ {area.aParent.atitle}}
下级地区:
{ %for a in area.areainfo_set.all%} - { {a.atitle}}
{ %endfor%}
- 在booktest/urls.py中配置一个新的urlconf
urlpatterns = [ url(r'^area/$', views.area, name='area')]