django学习笔记

django学习笔记

Choice参数(数据库设计字段常见)

针对某一个字段可能是可以完全列举的, 我们可以使用choice字段

例如: 性别, 成绩等级

gender_choices = (

  (1, '男'),

  (2, '女'),

  (3, '其他'),

)

gender = models.IntegerField(choice=gender_choices)

score_choices = (
('A','优秀'),
('B','良好'),
('C','及格'),
('D','不合格'),
)
# 保证字段类型跟列举出来的元组第一个数据类型一致即可
score = models.CharField(choices=score_choices,null=True)

2. 获取字段对应的中文信息

user_obj = models.User.objects.filter(pk=1).first()

print(user_obj.gender) # 这里打印的是元组的第一个元素

# 只要是choices参数的字段, 如果你想要获取对应的信息, 固定写法 get_字段名_display()

print(user_obj.get_gender_display())

# 如果没有对应关系, 是什么就展示什么

###MTV与MVC模型```pythonM:modelsT:templatesV: views# MVC: 其实django的本质也是MVCM: modelsV: viewsC: controller

多对多三种创建方式

# 全自动: 利用ORM自动帮我们创建第三张表class Book(models.Model):anme = models.CharField(max_length=32)authors = models.ManyTOManyField(to='Author')class Author(models.Model):name = models.CharField(max_length=32)# 优点, 第三张表不需要你自己创建 ,还支持orm的各种操作# 缺点:第三张表的扩展性很差 不支持额外添加字段# 存手动class Book(models.Model):anme = models.CharField(max_length=32)class Author(models.Model):name = models.CharField(max_length=32)class Book2Author(models.Model):book_id = models.ForeginKey(to='Book')author_id = models.ForeignKey(to='Author')# 优点: 第三张表完全取决于自己进行的额外扩展# 缺点: 需要写的代码较多, 并且不支持orm的简单操作,不推荐使用# 半自动class Book(models.Model):    name = models.CharField(max_length=32)    authors = models.ManyToManyField(to='Author',                                     through='Book2Author',                                     through_fields=('book','author')                                     )class Author(models.Model):    name = models.CharField(max_length=32)    # books = models.ManyToManyField(to='Book',    #                                  through='Book2Author',    #                                  through_fields=('author','book')    #                                  )class Book2Author(models.Model):    book = models.ForeignKey(to='Book')    author = models.ForeignKey(to='Author')"""to='关联的表名'through='自己创建的第三张表'through_fields=(第三张表的字段)through_fields字段先后顺序当前表是谁, 就把对应的关联字段放在前面可以使用orm 的正反向查询, 但是没法使用add,set,remove, clear"""### AJAX```python异步提交, 局部刷新$('#btn').click(function () {        // 朝后端发送ajax请求        $.ajax({            // 1.指定朝哪个后端发送ajax请求            url:'', // 不写就是朝当前地址提交            // 2.请求方式            type:'post',  // 不指定默认就是get 都是小写            // 3.数据            {#data:{'username':'jason','password':123},#}            data:{'i1':$('#d1').val(),'i2':$('#d2').val()},            // 4.回调函数:当后端给你返回结果的时候会自动触发 args接受后端的返回结果            success:function (args) {                {#alert(args)  // 通过DOM操作动态渲染到第三个input里面#}                {#$('#d3').val(args)#}                console.log(typeof args)            }        })    })# 后端使用JsonResponse返回数据, 回调函数会自动帮你反序列化        # 后端使用HttpResponse返回数据, 回调函数不会帮你反序列化            # 自己在前端利用JSON.parse()            # 后端, json.dumps()
免责声明:本网信息来自于互联网,目的在于传递更多信息,并不代表本网赞同其观点。其原创性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容、文字的真实性、完整性、及时性本站不作任何保证或承诺,并请自行核实相关内容。本站不承担此类作品侵权行为的直接责任及连带责任。如若本网有任何内容侵犯您的权益,请及时联系我们,本站将会在24小时内处理完毕。
相关文章
返回顶部