Django模块

一.url

二.views

三.templates

四.models

五.admin

二。


models.py

class School(models.Model):
    name=models.CharField(max_length=32)
    class Meta:
        db_table='School'

    def __str__(self):
        return self.name

class Classes(models.Model):
    name=models.CharField(max_length=32)
    sc = models.ForeignKey(to='School',on_delete=models.CASCADE)
    m=models.ManyToManyField(to='Teacher',related_name='clas')
    class Meta:
        db_table='Classes'

    def __str__(self):
        return self.name

class Student(models.Model):
    name=models.CharField(max_length=32)
    cs=models.ForeignKey(to='Classes',related_name='stu',on_delete=models.CASCADE)
    class Meta:
        db_table='Student'

    def __str__(self):
        return self.name

class Teacher(models.Model):
    name=models.CharField(max_length=32)

    class Meta:
        db_table='Teacher'

    def __str__(self):
        return self.name

1.     ORM一对多

    1.1     正向查 (多表夸表查询


views.py
    ret=models.Student.objects.all().values('name','cs__name','cs__sc__name')#三个表联合查询,ForenginKey特点,如果有还可以更多
    for obj in ret:
        print(obj['name'],obj['cs__name'],obj['cs__sc__name'])

   

    1.2     反向查 (小写类名_set

    obj=models.Classes.objects.filter(id=2).first()
    # stu=obj.student_set.all()
    stu=obj.stu.all()#cs=models.ForeignKey(to='Classes',related_name='stu',on_delete=models.CASCADE),stu等价于student_set
#区别
    models.Student.objects.values('name','cs__name')#以学生表查(多方),学生全部列出,班级是否列出看其是否有对应学生
    models.Classes.objects.values('name','stu__name')#以班级表查(一方),班级全部列出,学生是否列出看其是否有对应班级

2 .  ORM多对多

    1.1 和‘一对多’一样

    print(models.Classes.objects.values('name','m','m__name'))#正向
    print(models.Teacher.objects.values('name','clas',clas__name'))#反向

    1.2  add()

    
   #正向—→在第三张表中为一个班级添加一名老师
    obj=models.Classes.objects.filter(id=1).first()
    obj.m.add(2)
    #反向—→在第三张表中为一个老师添加一个班级
    obj=models.Teacher.objects.filter(id=4).first()
    obj.clas.add(3)
    1.3 set()

#反向set方法(正向同理),为一个老师设置三个班级,表中老师和班级与设定不一致的——删除,一致的——保留,缺少的——添加
    obj = models.Teacher.objects.filter(id=2).first()
    obj.clas.set([1,3])










(五)admin是django强大功能之一,它能共从数据库中读取数据,呈现在页面中,进行管理。默认情况下,它的功能已经非常强大,如果你不需要复杂的功能,它已经够用,但是有时候,一些特殊的功能还需要定制,比如搜索功能,下面这一系列文章就逐步深入介绍如何定制适合自己的admin应用。

如果你觉得英文界面不好用,可以在setting.py 文件中修改以下选项

1
LANGUAGE_CODE  =  'en-us'   #LANGUAGE_CODE = 'zh-hans'

1  认识ModelAdmin

   管理界面的定制类,如需扩展特定的model界面需从该类继承。

2 注册medel类到admin的两种方式:

     <1>   使用register的方法

1
admin.site.register(Book,MyAdmin)

     <2>   使用register的装饰器

1
@admin .register(Book)

3 通过命令 python manage.py createsuperuser 来创建超级用户

python manage.py createsuperuser
Username (leave blank to use 'root'): admin
Email address: [email protected]
Password:
Password (again):
Superuser created successfully.
[root@solar HelloWorld]

三 掌握一些常用的设置技巧

  •     list_display:     指定要显示的字段
  •     search_fields:  指定搜索的字段
  •     list_filter:        指定列表过滤器
  •     ordering:       指定排序字段

6.auth

2018-5-17

FBV和CBV

CBV:

    1.

        

    2.

        

    3.请求流程

        

猜你喜欢

转载自blog.csdn.net/wudiyunxing/article/details/80332615