VS2019 开发Django(五)------createsuperuser

导航: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()
#没有查到数据
<QuerySet []>
#导入时区模块 >>> 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 "<stdin>", line 1, in <module>
  File "D:\项目\local\DjangoLazyOrders\env\lib\site-packages\django\db\models\manager.py", line 82, in manager_method
    return getattr(self.get_queryset(), name)(*args, **kwargs)
  File "D:\项目\local\DjangoLazyOrders\env\lib\site-packages\django\db\models\query.py", line 408, in get
    self.model._meta.object_name
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
<QuerySet [<Question: What's new?>, <Question: What's your problem?>]>
>>> questions[1]
<Question: What's your problem?>
>>> 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,Orders

admin.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_name
    class 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增删查改

到这一步,后台管理基本就可以了,增删查改都有了,还有一个图片上传需要完善,待续...

posted @ 2019-09-14 11:39  dwBurning  阅读(2090)  评论(0编辑  收藏  举报