美文网首页
Django-Model

Django-Model

作者: 临渊如峙 | 来源:发表于2018-08-16 15:22 被阅读0次

数据库映射关系:一对一、一对多、多对多

1、一对一案例:账号和联系人

Model

from django.db import models

账号
class Account(models.Model):
     username = models.CharField(max_length=20, null=True)
     password = models.CharField(max_length=20)
     register = models.DateField(auto_now_add=True)

联系人
class Connect(models.Model):
     account = models.OneToOneField("Account", on_delete="CASCADE")
     address = models.CharField(max_length=30)
     mobile = models.CharField(max_length=11)

View

from django.shortcuts import render
from django.template import loader
from .models import Account, Connect

def index(request):
     userlist = Account.objects.all()
     context = {"userlist": userlist}
     return render(request,"one_to_one/index.html", context)

def detail(request, id):
     user = Account.objects.get(pk=id)
     context = {"user": user}
     return render(request,"one_to_one/detail.html", context)

Template

index.html
<h1>账号信息</h1>
<ul>
{% for user in userlist %}
<li>
<a href="one_to_one/{{ user.id }}/">{{ user.username }}--{{ user.register }}</a>
</li>
{% endfor %}
</ul>

detail.html
<h1>{{ user.username }}</h1>
<ul>
<li>{{ user.connect.address }}</li>
<li>{{ user.connect.mobile }}</li>
</ul>

2、一对多:图书和英雄

Model

图书
class BookInfo(models.Model):
     book_name = models.CharField(max_length=20)
     publish_date = models.DateTimeField()

英雄
class HeroInfo(models.Model):
      name = models.CharField(max_length=20)
     gender = models.BooleanField(default=True)
     content = models.CharField(max_length=100)
     book = models.ForeignKey("BookInfo", on_delete=models.CASCADE)

View

def index(request):
     booklist = BookInfo.objects.all()
      context = {"booklist":booklist}
     return render(request,"booktest/index.html", context)

def detail(request, id):
     book = BookInfo.objects.get(pk=id)
     context = {"book": book}
     return render(request,"booktest/detail.html", context)

Template

index.html
<h1>图书列表</h1>
<ul>
{% for book in booklist %}
<li>
<a href="{% url 'booktest:detail' book.id %}">{{ book.book_name }}</a>
</li>
{% endfor %}
</ul>

detail.html
<h1>{{ book.book_name }}</h1>
<ul>
{% for hero in book.heroinfo_set.all %}
<li>
{{ hero.name }}--{{ hero.content }}
</li>
{% endfor %}
</ul>

3、多对多:电脑和软件

Model

电脑
class Computer(models.Model):
      id = models.AutoField(primary_key=True)
     host = models.CharField(max_length=20)

软件
class Application(models.Model):
     name = models.CharField(max_length=20)
     relation = models.ManyToManyField(to='Computer')

View

def index(request):
     computerlist = Computer.objects.all()
     context = {"computerlist": computerlist}
     return render(request,"many_to_many/index.html", context)

def detail(request, id):
     computer = Computer.objects.get(pk=id)
     context = {"computer": computer}
     return render(request,"many_to_many/detail.html", context)

Template

index.html
<h1>主机列表</h1>
<ul>
{% for computer in computerlist %}
<li>
<a href="{{ computer.id }}/">{{ computer.host }}</a>
</li>
{% endfor %}
</ul>

detail.html
<h1>{{ computer.host }}</h1>
<ul>
安装软件
{% for application in computer.application_set.all %}
<li>
{{ application.name }}
</li>
{% endfor %}
</ul>

相关文章

  • Django-Model

    数据库映射关系:一对一、一对多、多对多 1、一对一案例:账号和联系人 Model from django.db i...

  • Django-model

    DRY对于不同数据源都应该独立存在,减少冗余的数据。 model就是你唯一可信的真实数据源。它包含了你所要存储数据...

  • Django-model操作

    操作model前需要先在文件中引入该model 1、存储 2、读取 获取到之后遍历得到的数据 然后获取需要的字段值...

  • django-model之元选项

    在模型类里面可以进行元选项设置.模型元数据是“任何不是字段的数据”元选项举例: 可用的元选项 abstract 如...

  • Django-model之feild进阶

    参考地址 在model中添加字段的格式一般为: field_name = field_type(**field_...

  • 重读文档系列:django-model文档

    filed type包含CharField ,IntegerField 等等,作用不仅仅是确定类型,类型确定后,对...

  • django-model之定义查询集API

    下面的这个例子允许你直接从自定义的管理器Person.people 中调用authors() 和editors()...

  • django-model外键关系之多对多

    多对多 ManyToManyField用来定义多对多关系多对多在哪个模型中设置ManyToManyField并不重...

  • django-model外键关系之一对多

    一对多 外键字段是放在多的一方模型类里面的 比如,一辆汽车(Car)有一个制造商(Manufacturer) ——...

  • django-model外键关系之一对一

    一对一关系的创建 一对一关系的使用

网友评论

      本文标题:Django-Model

      本文链接:https://www.haomeiwen.com/subject/jdrsrftx.html