`
喜欢蓝色的我
  • 浏览: 370790 次
  • 性别: Icon_minigender_2
  • 来自: 北京
社区版块
存档分类
最新评论

django学习知识点汇总(model)

 
阅读更多

问题1:

数据库查询,是出现[<Publisher: Publisher object>, <Publisher: Publisher object>]

操作步骤:

1.python manage.py shell 进入django的shell编程中

2. from books.models import Publisher

>>> publisher_list = Publisher.objects.all()
>>> publisher_list
[<Publisher: Publisher object>, <Publisher: Publisher object>]

我们可以简单解决这个问题,只需要添加一个方法 __str__()  Publisher 对象。 __str__() 方法告诉Python要怎样把对象当作字符串来使用。 请看下面:

更改model.py文件

 

from django.db import models

class Publisher(models.Model):
    name = models.CharField(maxlength=30)
    address = models.CharField(maxlength=50)
    city = models.CharField(maxlength=60)
    state_province = models.CharField(maxlength=30)
    country = models.CharField(maxlength=50)
    website = models.URLField()

    **def __str__(self):**
        **return self.name**

class Author(models.Model):
    salutation = models.CharField(maxlength=10)
    first_name = models.CharField(maxlength=30)
    last_name = models.CharField(maxlength=40)
    email = models.EmailField()
    headshot = models.ImageField(upload_to='/tmp')

    **def __str__(self):**
        **return '%s %s' % (self.first_name, self.last_name)**

class Book(models.Model):
    title = models.CharField(maxlength=100)
    authors = models.ManyToManyField(Author)
    publisher = models.ForeignKey(Publisher)
    publication_date = models.DateField()

    **def __str__(self):**
        **return self.title**

就象你看到的一样, __str__() 方法返回一个字符串。 __str__() 必须返回字符串, 如果是其他类型,Python将会抛出 TypeError 错误消息 "__str__ returned non-string" 出来。

为了让我们的修改生效,先退出Python Shell,然后再次运行 python manage.py shell 进入。 现在列出 Publisher 对象就很容易理解了:

>>> from books.models import Publisher
>>> publisher_list = Publisher.objects.all()
>>> publisher_list
[<Publisher: Addison-Wesley>, <Publisher: O'Reilly>]

请确保你的每一个模型里都包含 __str__() 方法,这不只是为了交互时方便,也是因为 Django会在其他一些地方用 __str__()来显示对象。

最后, __str()__ 也是一个很好的例子来演示我们怎么添加 行为 到模型里。 Django的模型不只是为对象定义了数据库表的结构,还定义了对象的行为。 __str__() 就是一个例子来演示模型知道怎么显示它们自己。

 

问题二

用order_by() 想固定按照某个字段排序,可在模板中写上

常用方法:

>>> Publisher.objects.order_by("-name")
[<Publisher: O'Reilly>, <Publisher: Apress Publishing>, <Publisher: Addison-Wesley>]

再model.py 中定义了默认排序字段

 

class Publisher(models.Model):
    name = models.CharField(maxlength=30)
    address = models.CharField(maxlength=50)
    city = models.CharField(maxlength=60)
    state_province = models.CharField(maxlength=30)
    country = models.CharField(maxlength=50)
    website = models.URLField()

    def __str__(self):
        return self.name

    **class Meta:**
        **ordering = ["name"]**

就可以直接写

In [3]: Publisher.objects.order_by()
Out[3]: [<Publisher: Addison-Wesley>, <Publisher: O'Reilly>, <Publisher: Apress>]

问题三

删除字段

从模型里删除一个字段可要比增加它简单多了。删除一个字段仅需要做如下操作:

从你的模型里删除这个字段,并重启Web服务器。

使用如下面所示的命令,从你的数据库中删掉该列:

ALTER TABLE books_book DROP COLUMN num_pages;

删除 Many-to-Many 字段

因为many-to-many字段同普通字段有些不同,它的删除过程也不一样:

删除掉你的模型里的 ManyToManyField ,并且重启Web服务器。

使用如下面所示的命令,删除掉你数据库里的many-to-many表:

DROP TABLE books_books_publishers;

删除模型

完全删除一个模型就像删除一个字段一样简单。删除模型仅需要做如下步骤:

将此模型从你的 models.py 文件里删除,并且重启Web服务器。

使用如下的命令,将此表从你的数据库中删除:

DROP TABLE books_book;

 

分享到:
评论

相关推荐

    Django_book_2_中文版.pdf

    ### Django Book 2 中文版知识点总结 #### 第一章:Django介绍 - **框架是什么?** - 框架是一种预先构建的软件...以上是《Django Book 2》中文版的部分核心知识点汇总,希望能帮助读者更好地理解和掌握Django框架。

    沈阳工学院 Django Web期末复习资料

    ### Django Web期末复习知识点 #### 一、项目与应用创建 ...以上就是沈阳工学院Django Web期末复习的关键知识点汇总。希望这些知识点能够帮助学生更好地理解和掌握Django框架的核心概念和操作方法。

    毕业设计汇总总.zip

    总的来说,这个毕业设计项目展示了如何利用Python的Django框架构建一个基本的Web应用,涵盖了数据库操作、URL路由、视图处理、模板渲染、用户认证等多个关键知识点。尽管存在bug,但作为学习和实践的起点,它无疑为...

    python 基础面试常见汇总

    【Python基础面试知识点详解】 1. **Python异常处理**: Python中的异常处理是程序运行出错时的反馈机制。常见的异常类型有FloatingPointError(浮点计算错误)、OverflowError(数值运算超出最大限制)、...

    开源杂志08-09年汇总0302

    在这里,我们将深入探讨这些开源杂志可能包含的重要知识点。 首先,让我们看看压缩包中的文件名称:`opensource11_200811.pdf`、`opensource12_200812.pdf`、`opensource10_200810.pdf`和`opensource9_200809.pdf`...

    110道Python面试题汇总.rar

    下面我们将详细探讨这些知识点。 1. **基础语法**:Python的基础包括变量赋值、数据类型(如整型、浮点型、字符串、布尔型、列表、元组、字典和集合)、控制流(if-else、for、while循环)以及函数定义与调用。 2....

    好用的Python爬虫与Web开发库汇总共2页.pdf.zip

    - **Django**: 全能的Web框架,遵循MVC(Model-View-Controller)设计模式,提供ORM(对象关系映射),内置管理界面,以及强大的认证和权限系统。 - **Flask**: 微型框架,轻量级且灵活,适合小型应用。它依赖于...

    Python Web 接口开发与测试

    #### 三、其他知识点概述 **3.1 分层的自动化测试** 自动化测试可以分为不同的层次,包括单元测试、集成测试、系统测试等。每一层都有其特定的目标和应用场景。 **3.2 单元测试与模块测试** - **单元测试**:...

    程序员求职-Vue面试题汇总.zip

    下面将详细讨论Vue面试中可能会涉及的关键知识点。 1. **Vue基础知识**: - 双向数据绑定:Vue通过`v-model`指令实现了视图和模型间的双向绑定。 - 模板语法:包括`{{ }}`插值表达式、`v-bind`属性绑定、`v-on`...

    工资管理系统的源代码

    下面将详细介绍这个"工资管理系统的源代码"所涉及的关键知识点。 1. **数据库设计**: 工资管理系统通常需要一个强大的数据库来存储员工信息、工资结构、考勤记录等数据。这包括员工表(Employee)、工资项表...

Global site tag (gtag.js) - Google Analytics