简介:许多朋友问有关Django模型的问题。本文的首席执行官注释将为您提供详细的答案,以供您参考。我希望这对每个人都会有所帮助!让我们一起看看!
Django模型通常使用Django的GET和过滤器方法。重要的是要找出两者之间的区别。
为了说明两者之间的差异,定义了2个模型
班级学生(Models.Model):
name = models.chafield('name',max_length = 20,默认='')
age = models.charfield('age',max_length = 20,默认='')
课程(Models.Model):
学生=型号。
1.让我们先谈谈django的获取方法:
1django的GET方法是从数据库中获得匹配结果并返回对象。如果记录不存在,它将报告错误。
例如,如果我的数据库中有记录,则记录的值为“ python”,我使用student = statent.objects.get。
它返回记录对象。您可以通过学生查看。__dict__。它返回字典表格。
而且,如果我使用GET方法检查数据库中不存在的记录,则该程序将报告错误。
例如:student = student.objects.gets.get(name ='pharaoh'),您可以自己运行。
2如果您使用django获取相关表的数据,并且如果密钥表的数据中有2个以上的数据,将会报告错误。
例如,我的学生表中有一个记录:
ID名称年龄
1 Python 24
书籍表:
id student_id
1 1
21
我用
student = student.objects.get(name ='python')
book = book.objects.get(学生)
它还报告了一个错误,因为书籍表有2个记录和学生表。
2.让我们谈谈Django过滤器:
1Django滤波器方法是匹配数据库的结果,并返回对象列表。如果记录不存在,它将返回[]。
例如,我的数据库中有一个记录。如果记录的价值为Python,我使用student = student.objects.filter(name ='python'))))))))
返回的学生是对象的列表。可以看出,学生[0]的结果和上述方法返回的雕像是相同的。
官方文件中的说明:
Onetoonefield
一对一的关系。从概念上讲,这类似于具有唯一= true的外国人,但是“重新的反向将直接撤回一个对象。
我们可以认为,当外国钥匙的唯一参数是真实的,OneToOneField和Foreike Key是相似的。不同之处在于,在获取数据时,OneToOneField返回单独的对象,而外国键则返回QuerySet。
模型
来自django.db导入模型
类引擎(型号。模型):
name = models.charfield(max_length = 25)
def __unicode __(self):
返回self.name
班级汽车(Models.Model):
name = models.charfield(max_length = 25)
引擎=型号。
def __unicode __(self):
返回self.name
Class Engine2(Models.Model):
name = models.charfield(max_length = 25)
def __unicode __(self):
返回self.name
CAR2类(Models.Model):
name = models.charfield(max_length = 25)
Engine = Models.Foreignkey(Engine2,unique = true)
def __unicode __(self):
返回self.name
当我们在python manage.py shell中执行时
Onetoonefield:
从Testapp.Models进口汽车,发动机
c = car.objects.get(name ='audi')
E = Engine.Objects.get(name ='柴油')
e.car
汽车:奥迪
具有唯一= true的外国钥匙:
来自Testapp.Models Import Car2,Engine2
c2 = car2.Objects.get(name ='Mazda')
e2 = Engine2.Objects.get(name ='Wankel')
e2.car2_set.all()
[CAR2:马自达]
参考:
这些东西有一种方法。我已经使用了。
在Django提供的管理类中,有所有这些用法。您可以找到其源代码并自己阅读。
DataField确实需要一个对象将其写入数据库。
Foriegnkey确实需要建立的课程。例如
此外,它在Djangoproject的官方网站上提供了丰富的帮助。可以搜索大多数答案。
知识的要点:
桌子关系的实现
一个-to -Multi -ptable关系
MySQL中的一对主要是通过外部键实现的,在Django模型中,它是通过ExourneKeyfield类型实现的。
一个 - 一张桌子关系
MySQL中的一个-to -ONE通过外部密钥和唯一键实现,并通过Django模型中的OneToOneField类型实现。
多站
MySQL中的大多数对主要是通过中间表和唯一键实现的,并通过Django模型中的ManyTomanyfield类型实现。中间手表模型将自动创建。
例子:
关系表中数据的操作
在Internet上看到使用Django的模型和MAKEMIGRATION,迁移命令创建新表并使用它。但是我的数据已经存在,并且已经存储了,并且已经存储了数据,并且无法创建新表格。Django的指示和与模型名称的映射关系可以使Django使用现有表。
如果模型在Django中存在如下:
[python]查看普通副本
来自django.db导入模型
#在这里创建您的模型。
Sciencenews(Models.Model):
id = models.charfield(max_length = 36,primary_key = true)
first_module = model.charfield(max_length = 30,默认值=“ news”)
second_module = model.charfield(max_length = 30,默认值=“最新新闻”)
title = models.charfield(max_length = 300)
作者= models.charfield(max_length = 60,null = true)
publish_date = models.charfield(max_length = 35,null = true)
content = model.textfield(null = true)
crawl_date = model.charfield(max_length = 35,null = true)
from_url = models.charfield(max_length = 350,null = true)
执行数据迁移命令:
[python]查看普通副本
python manage.py makemign
python manage.py迁移
名为show_sciencenews的数据表将在数据库中生成。显示为应用程序名称。我的应用程序名称在此处显示。
我的存储和攀登数据数据的表名是Science_News,我想使用它来使用它而不是创建新表。其名称的名称已更改为带有表格的模型的名称,在这里我更改为show_sciencenews。然后使用上述数据迁移命令。目前,可以提示数据表数据表已经存在错误。不合理的模型已使用数据表映射。接下来,您只需要正常使用模型和数据表即可。
结论:以上是首席CTO注释为所有人编写的Django模型的全部内容。感谢您阅读本网站的内容。我希望这对您有帮助。有关Django模型的相关内容的更多信息是指在此站点上找到它。