问题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 中文版知识点总结 #### 第一章:Django介绍 - **框架是什么?** - 框架是一种预先构建的软件...以上是《Django Book 2》中文版的部分核心知识点汇总,希望能帮助读者更好地理解和掌握Django框架。
### Django Web期末复习知识点 #### 一、项目与应用创建 ...以上就是沈阳工学院Django Web期末复习的关键知识点汇总。希望这些知识点能够帮助学生更好地理解和掌握Django框架的核心概念和操作方法。
总的来说,这个毕业设计项目展示了如何利用Python的Django框架构建一个基本的Web应用,涵盖了数据库操作、URL路由、视图处理、模板渲染、用户认证等多个关键知识点。尽管存在bug,但作为学习和实践的起点,它无疑为...
【Python基础面试知识点详解】 1. **Python异常处理**: Python中的异常处理是程序运行出错时的反馈机制。常见的异常类型有FloatingPointError(浮点计算错误)、OverflowError(数值运算超出最大限制)、...
在这里,我们将深入探讨这些开源杂志可能包含的重要知识点。 首先,让我们看看压缩包中的文件名称:`opensource11_200811.pdf`、`opensource12_200812.pdf`、`opensource10_200810.pdf`和`opensource9_200809.pdf`...
下面我们将详细探讨这些知识点。 1. **基础语法**:Python的基础包括变量赋值、数据类型(如整型、浮点型、字符串、布尔型、列表、元组、字典和集合)、控制流(if-else、for、while循环)以及函数定义与调用。 2....
- **Django**: 全能的Web框架,遵循MVC(Model-View-Controller)设计模式,提供ORM(对象关系映射),内置管理界面,以及强大的认证和权限系统。 - **Flask**: 微型框架,轻量级且灵活,适合小型应用。它依赖于...
#### 三、其他知识点概述 **3.1 分层的自动化测试** 自动化测试可以分为不同的层次,包括单元测试、集成测试、系统测试等。每一层都有其特定的目标和应用场景。 **3.2 单元测试与模块测试** - **单元测试**:...
下面将详细讨论Vue面试中可能会涉及的关键知识点。 1. **Vue基础知识**: - 双向数据绑定:Vue通过`v-model`指令实现了视图和模型间的双向绑定。 - 模板语法:包括`{{ }}`插值表达式、`v-bind`属性绑定、`v-on`...
下面将详细介绍这个"工资管理系统的源代码"所涉及的关键知识点。 1. **数据库设计**: 工资管理系统通常需要一个强大的数据库来存储员工信息、工资结构、考勤记录等数据。这包括员工表(Employee)、工资项表...