导航:VS2019开发Django系列
上篇我们已经把LazyOrders中用到的C#的实体转成了Django中的Entity,并且已经迁移数据库成功,那么,今天继续介绍Django中内置的数据库操作Api以及新建超级用户。
1)初试API,打开Django shell
输入如下命令:然后查看数据库中的数据,我们可以看到What's new?成功保存到了数据库中,更多的操作可以直接参考官方文档:
#导入models
>>> from hello.models import Choice,Question
#从数据库查询所有的Question
>>> Question.objects.all()
#没有查到数据
#导入时区模块
>>> from django.utils import timezone
#创建了一个名为q的Question对象
>>> q = Question(question_text="What's new?",pub_date=timezone.now())
#将q对象保存到数据库中
>>> q.save()
根据主键查询:
>>> from hello.models import Question
>>> q = Question.objects.get(pk=2)
Traceback (most recent call last):File "
hello.models.Question.DoesNotExist: Question matching query does not exist.
>>> q = Question.objects.get(pk=1)
>>> q.id
1
>>> q.was_published_recently()
False
>>>
根据其他条件查询:
>>> questions = Question.objects.filter(question_text__startswith='What')
>>> questions
>>> questions[1]
>>> questions[1].question_text
"What's your problem?"
>>>
执行原生Sql:注意百分号要转义,%%
>>> from hello.models import Question
>>> query = Question.objects.raw("select * from hello_question where question_text like '%%python%%'")
>>> for q in query:
... print(q)
...
python从入门到放弃
>>>
2)创建超级用户
输入用户名,邮箱,密码即可,创建完成后,点运行,然后在跳转的地址http://localhost:8090/后面追加admin回车,就会跳转到Django的管理登录页,输入我们刚刚创建的用户名和密码,即可登录
登录进去之后,我们会看到认证和授权相关的内容,这是框架提供的,但是,我们自己添加的Hello应用并没有展示出来?
3)向管理页中加入我们的hello应用
找到我们hello应用下面的admin.py文件,向里边添加内容如下:
from django.contrib import admin# Register your models here.
from .models import Question,Choice,Category,Menu,Carts,Ordersadmin.site.register(Question)
admin.site.register(Choice)
admin.site.register(Category)
admin.site.register(Menu)
admin.site.register(Carts)
admin.site.register(Orders)
再次启动,重新访问admin页面,我们的hello应用中添加的实体都展示出来了,对比发现,除了Category是中文类别之外,其他都是英文的,对比源代码就知道Category添加了Meta类,其中verbose_name_plural 赋值了中文‘类别’,所以管理页显示为中文,那么,如果字段要显示中文,可以设置verbose_name的值为中文
#类别表
class Category(models.Model):category_id = models.AutoField(primary_key=True,verbose_name='类别ID')category_name = models.CharField(max_length=30,verbose_name='类别名')def __str__(self):return self.category_nameclass Meta:verbose_name_plural = '类别'#菜单表
class Menu(models.Model):menu_id = models.AutoField(primary_key=True,verbose_name='菜单ID')category = models.ForeignKey(Category,on_delete=models.CASCADE)menu_name = models.CharField(max_length=50,verbose_name='菜单名')img_path = models.CharField(max_length=100,verbose_name='图片路径',default='')price = models.DecimalField(max_digits=5, decimal_places=2)
4)总结
- 该篇主要介绍了Django中的ORM怎么增删查改数据库
- 创建了超级用户,并完成了配置,可以对我们新增加的Model增删查改
到这一步,后台管理基本就可以了,增删查改都有了,还有一个图片上传需要完善,待续...