model和 modle一样吗?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了model和 modle一样吗?相关的知识,希望对你有一定的参考价值。
模特和模型两者都可以表示吗?
我一直认为模型是model
模特是modle 对吗
modle是错误的。
model
1、读音:英 [ˈmɒdl] 美 [ˈmɑːdl]
2、释义:模型,样式,设计。
3、语法:model的基本意思是“模型”,指以某人或某物为样本复制一个比原型小若干倍的复制品。也可指某物的大小、式样,即“设计,型号”。
4、例句:I made a model out of paper and glue. 我用纸和胶水制作了一个模型。
扩展资料
近义词:mould
1、读音:英 [məʊld] 美 [moʊld]
2、释义:模具,铸模,(独特)类型。
3、语法:mould指用模具铸造或冲压,mould常指培养塑造人的思想、性格等。
4、例句:If a bottle was faulty, would you blame the bottle or the mould? 如果瓶子造出来有毛病,应该怪瓶子还是怪模型?
参考技术A 哪里有modle这个词啊?找出来拜为高人。。。因为根本没有modle这个词,如果在网上找到那也是不负责任的网站写错了,查字典是查不到的。不信你可以在百度里面搜一下看搜得出来一个结果不?只有model和modal
model是模型,模特
modal是形容词,形态上的,情态的。本回答被提问者采纳 参考技术B model
n.
模型, 雏型; 原型; 设计图; 模范
典型
服装模特儿; (画家等的)模特儿
样式, 样机
[口]非常相似的人[东西]
时装模特儿穿的衣帽等
型号, 缩图; 靠模
==================================
modle: n.
模型,原形;范例,;模范
===============
其实俩词一样的。不过一个读“modl”一个读 "madl"。。。不会注音标。反正就这样吧。 参考技术C model是模型但不是模特,modle才是模特。
Django-ModleForm
在之前学习forms组件中,需要验证的项目是由我们自己来写的,这里可以使用ModleForm来把Modle自动转换为Form,这样就不用我们自己写验证关系了
转换关系示例
############models.py############
class Book(models.Model):
title = models.CharField( max_length=32)
publishDate=models.DateField()
price=models.DecimalField(max_digits=5,decimal_places=2)
# 与Publish建立一对多的关系,外键字段建立在多的一方
publish=models.ForeignKey(to="Publish",to_field="nid",on_delete=models.CASCADE)
# 与Author表建立多对多的关系,ManyToManyField可以建在两个模型中的任意一个,自动创建第三张表
authors=models.ManyToManyField(to=‘Author‘,)
#在转换成表单后如果想要显示中文可以在括号内写上verbose_name="书籍名称"
############ModleForm############
from django.forms import ModelForm
class BookModelForm(ModelForm):
class Meta:
model=Book
fields="__all__"
#######这是在学习ModleForm之前自己写的form验证########
class BookForm(forms.Form):
title=forms.CharField()
price=forms.DecimalField()
publishDate=forms.DateField()
#state=forms.ChoiceField(choices=[(1,"已出版"),(2,"未出版")])
#ModelChoiceField是单选
publish=forms.ModelChoiceField(queryset=Publish.objects.all())
#ModelMultipleChoiceField是多选
authors=forms.ModelMultipleChoiceField(queryset=Author.objects.all())
上面的示例中,ModleForm通过中间的写法把Modle转换为Form
具体写法
views.py中
addBook:添加书籍
def addbook():
if get请求:
#实例化一个对象
form=BookModelForm()
#把这个对象返回给前端页面,通过{{form.as_p}}渲染出来
return render(request,"addbook.html",locals()) # 标签渲染 {{form.as_p}}
if post请求:
form=BookModelForm(request.POST)
if form.is_valid():
form.save() # create操作
editBook:编辑书籍
def editbook():
if get请求:
editbook=Book.objects.get(pk=id)
#实例化对象中带有instance,此时渲染出的页面中是带值的,正好是编辑页面所需的效果
form=BookModelForm(instance=editbook)
return render(request,"addbook.html",locals()) # 标签渲染 {{form.as_p}}
if post请求:
editbook=Book.objects.get(pk=id)
form=BookModelForm(request.POST,instance=editbook)
#有instance,此时form.save是更新操作
if form.is_valid():
form.save() # update操作
上面可以改成CBV的写法
封装示例
def get_modelForm(self):
from django.forms import ModelForm
class DemoModelForm(ModelForm):
class Meta:
model = self.model
# 对所有字段进行处理
fields = "__all__"
return DemoModelForm
调用的时候:
def add(self, request):
#ModelFormDemo等同于得到了DemoModelForm这个类,因此下面要再加括号往里传数据
ModelFormDemo = self.get_modelForm()
form = ModelFormDemo(request.POST)
实例化出来的form里面有什么
把实例化出来的form循环看下里面是什么
for i in form:
print("i==>",i)
#<input type="text" name="title" maxlength="32" required id="id_title" />
print("type(i)==>",type(i))
#<class ‘django.forms.boundfield.BoundField‘>
#在BoundField类下面会发现有个field,在下面打印一下
print("i.field==>", i.field)
#<django.forms.models.ModelMultipleChoiceField object at 0x0000015F8956B908>
print(type(i.field))
<class ‘django.forms.models.ModelMultipleChoiceField‘>
#.field属性我们可以用来判断这个字段是不是一对多或多对多
获取app名字和关联表的名称
related_model_name = bfield.field.queryset.model._meta.model_name
related_app_lable = bfield.field.queryset.model._meta.app_label
form.save()是有返回值的
obj = form.save()
print("obj==>", obj)
#obj==> Django 第二版
print("type==>", type(obj))
#type==> <class ‘app01.models.Book‘>
我们可以利用这个返回值
例如:
"pk": obj.pk,
"text": str(obj)
models中limit_choices_to的作用
具体写法
teachers = models.ManyToManyField(verbose_name=‘任课老师‘, to=‘UserInfo‘,related_name="abc",limit_choices_to={"depart__in":[1002,1005]})
tutor = models.ForeignKey(verbose_name=‘班主任‘, to=‘UserInfo‘, related_name=‘classes‘,limit_choices_to={"depart":1001})
渲染字段:
teachers: select
option: UserInfo.objects.all()
#加上limit_choices_to相当于做了筛选
option: UserInfo.objects.filter(depart__in=[1002,1003])
这个功能与ModelForm配合使用,告诉ModelForm在转换时怎么取option对象
IntegerField与choices
有这样一种写法
class Customer():
gender_choices = ((1, ‘男‘), (2, ‘女‘))
gender = models.SmallIntegerField(verbose_name=‘性别‘, choices=gender_choices)
问:如何在表中插入一条记录?
obj=Customer.objects.create(name="alex",gender=1)
问:想要得到这个对象所对应的这条记录性别是男还是女?
print(obj.gender) #显然这样是不行的,只能得到1或2
固定写法,在字段名称前面加get_,后面加_dispaly()
obj.get_gender_displayi() #得到结果“男”,或“女”
总结
1.ModleForm方便的地方不仅在于可以自动把数据表中的字段构建为页面,还可以将前端传来的数据验证后直接进行保存,在以前我们是自己从request.POST中get出页面传来的数据,然后再create到数据表中的。
2.form.save()操作包含create和update两种含义,其区别就在于ModelForm实例化的对象中有没有instance,有就是update
3.models中的字段类型
class Publish(models.Model):
nid = models.AutoField(primary_key=True)
name=models.CharField( max_length=32)
city=models.CharField( max_length=32)
email=models.EmailField()
models.py中models.EmailField()这类写法其实就是为了给ModleForm使用的,如果不使用ModleForm功能,那么写EmailField还是CharField并没有什么区别
4.可以看出ModleForm功能非常适合构建添加和编辑页面
以上是关于model和 modle一样吗?的主要内容,如果未能解决你的问题,请参考以下文章