1.django自定义字段类型,实现非主键字段的自增#-*-encoding:utf-8-*-fromdjango.db.models.fieldsimportField,IntegerFieldfromdjango.coreimportchecks,exceptionsfromdjango.utils.translationimportugettext_lazyas_classAutoIncreField(Field):description=_("Integer")empty_strings_allowed=Falsedefault_error_messages={'invalid':_("'%(value)s'valuemustbeaninteger."),}def__init...
继续阅读 >
分类:django
2020
09-24
09-24
Django ModelForm操作及验证方式
一、内容回顾Model-数据库操作-验证classA(MOdel):user=email=pwd=Form-classLoginForm(Form):email=fields.EmailField()user=pwd=-is_valid->每一个字段进行正则(字段内置正则)+clean_字段->clean(__all__)->_post_clean-cleand_data-error-------->推荐Form<---------二、ModelForm操作及验证Model+Form==>ModelForm。model和form的结合体,所以有以下功能:数据验证数据库操作model有操作数据库...
继续阅读 >
2020
09-24
09-24
动态设置django的model field的默认值操作步骤
问题背景django的modelfield需要动态设置默认值,具体案例如下:原始代码如下,model是Application,其中字段ignore_fort的默认值设置为FalseclassApplication(TimestampedModel):name=models.CharField(max_length=255,null=True)ignore_fort=models.BooleanField(default=False)然而现在有这样一个需求:default需要根据某个变量ENV进行动态设置,如果ENV是UAT或者FAT(不区分大小写,具体分支,比如uaT01也可以),...
继续阅读 >
2020
09-24
09-24
django 实现手动存储文件到model的FileField
通过POST请求,上传了文件,想要将文件存储在模型的FileField中request.FILES中的值均为UploadedFile类文件对象表单上传的文件对象存储在类字典对象request.FILES中,表单格式需为multipart/form-dataFieldFile.save(name,content,save=True)name:命名文件名content:必须是django.core.files.File或django.core.files.base.ContentFile二者之一的一个实例fromdjango.core.files.baseimportContentFile#fromdjango.core.file...
继续阅读 >
2020
09-24
09-24
解决django FileFIELD的编码问题
当获取FileField数据时会出现编码问题在数据库里显示的是D:\python项目\wxmkczpy\uploadfile\QQ截图20190210180915.png而取出后变成D%3A/python%E9%A1%B9%E7%9B%AE/wxmkczpy/uploadfile/QQ%E6%88%AA%E5%9B%BE20190210180915.png这是url编码所以可以用urllib的parse模块解决fromurllibimportparse#Createyourtestshere.a="D%3A/python%E9%A1%B9%E7%9B%AE/wxmkczpy/uploadfile/QQ%E6%88%AA%E5%9B%BE20190210180915.png"st...
继续阅读 >
2020
09-24
09-24
Django 删除upload_to文件的步骤
新版Django在admin后台直接删除一条数据时,file=models.FileField(upload_to=‘file')上传的文件并不会删除,以下为解决方法:在model.py加入:fromdjango.db.models.signalsimportpre_deletefromdjango.dispatch.dispatcherimportreceiver@receiver(pre_delete,sender=AddDateModel)defmymodel_delete(sender,instance,**kwargs):#PassfalsesoFileFielddoesn'tsavethemodel.instance.file.delete(False)补充...
继续阅读 >
2020
09-24
09-24
对django 2.x版本中models.ForeignKey()外键说明介绍
下面是代码classGroupInfos(models.Model):uid=models.AutoField(primary_key=True)caption=models.CharField(max_length=32,unique=True)ctime=models.DateTimeField(auto_now_add=True,null=True)uptime=models.DateTimeField(auto_now=True,null=True)classUserInfos(models.Model):username=models.CharField(max_length=32,blank=True,verbose_name='用户名')password=models.CharField(max_length=...
继续阅读 >
2020
09-24
09-24
基于Django OneToOneField和ForeignKey的区别详解
根据Django官方文档介绍:Aone-to-onerelationship.Conceptually,thisissimilartoaForeignKeywithunique=True,butthe“reverse”sideoftherelationwilldirectlyreturnasingleobject.OneToOneField与ForeignKey加上unique=True效果基本一样,但是用OneToOneField反向关联会直接返回对象。相反地,使用ForeignKey,反向关联后会返回QuerySet。例子:fromdjango.dbimportmodelsclassEngine(models.Model)...
继续阅读 >
2020
09-24
09-24
django 扩展user用户字段inlines方式
model:classProfile(models.Model):user=models.OneToOneField(User,on_delete=models.CASCADE,verbose_name='昵称')nickname=models.CharField(max_length=20)def__str__(self):return'<Profile:%sfor%s>'%(self.nickname,self.user.username)admin.pyfromdjango.contribimportadminfromdjango.contrib.auth.modelsimportUserfrom.modelsimportProfileclassProfileInline(admin.StackedInline):...
继续阅读 >
2020
09-24
09-24
解决django xadmin主题不显示和只显示bootstrap2的问题
异常:python3的xadmin主题只显示默认和bootstrap2解决办法:慢慢来相信能遇到这个问题的人,都是已经配置好xadmin的,该True的也都写过了首先找到xadmin文件,不会找的自己百度。进入xadmin下的plugins文件夹,打开themes.py文件然后找到这一段,大概在70行最后把ifex_themes:这行改为iflen(json.loads(ex_themes))>10:把ifsix.PY3:content=content.text.encode()这两行注释掉#ifsix.PY3:#content=content.text.enc...
继续阅读 >
2020
09-24
09-24
利用django model save方法对未更改的字段依然进行了保存
我就废话不多说了,直接上代码吧!obj=Obj.objects.get(id=1)printobj.name#此时name的值假定为'abc'defhandler(oid):obj=Obj.objects.get(id=oid)obj.name='123'obj.save()handler(obj.id)obj.age=10obj.save()printobj.name最终的name结果依然为'abc'。save()保存时,虽然没有更改其它字段,但依然会将内存中的值,再次存入数据库,子函数和其它进程更改的值会被覆盖。补充知识:DjangoSignals之pre_save&po...
继续阅读 >
2020
09-24
09-24
基于Django signals 信号作用及用法详解
1、Modelsignalsdjango.db.models.signales作用于django的model操作上的一系列信号1)pre_init()django.db.models.signals.pre_init当模型实例化时调用,在__init__()之前执行三个参数:pre_init(sender,args,kwargs):sender:创建实例的模型类args:参数列表kwargs:通过字典形式传递的参数2)post_init()django.db.models.signals.post_init它和pre_init可以说是一对,也是作用于模型实例化时,它是在__init__()之后被执行...
继续阅读 >
2020
09-24
09-24
浅谈django 模型类使用save()方法的好处与注意事项
如下所示:defuser_degree(self):degree=self.user.update_grade()returndegreedefsave(self,*args,**kwargs):self.degree=self.user_degree()self.p1_user=self.get_p1()self.p2_user=self.get_second()self.p3_user=self.get_third()self.first_get_money=self.get_first_commission()self.second_get_money=self.get_seconds()self.third_get_money=self.get_thirds()self.off_price...
继续阅读 >
2020
09-24
09-24
Django 实现对已存在的model进行更改
1.删除app下的migrations中的数据库操作的.py记录2.删除数据库django_migrations中相应记录3.pythonmanage.pymakemigrationsyourappname4.pythonmanage.pymigrateyourappname补充知识:djangomodelsave方法对未更改的字段依然进行了保存如下所示:obj=Obj.objects.get(id=1)printobj.name#此时name的值假定为'abc'defhandler(oid):obj=Obj.objects.get(id=oid)obj.name='123'obj.save()handler(obj.id)o...
继续阅读 >
2020
09-24
09-24
浅谈Django QuerySet对象(模型.objects)的常用方法
准备工作:新建一个项目,在项目中新家一个app,名字自取。将app添加值settings.py中,然后配置settings连接数据库。在app中的models中新建模型:fromdjango.dbimportmodels#Createyourmodelshere.classAuthor(models.Model):"""作者模型"""name=models.CharField(max_length=100)age=models.IntegerField()email=models.EmailField()classMeta:db_table='author'classPublisher(models.Model):...
继续阅读 >
2020
09-24
09-24
django使用F方法更新一个对象多个对象字段的实现
通常情况下我们在更新数据时需要先从数据库里将原数据取出后放在内存里,然后编辑某些字段或属性,最后提交更新数据库。使用F方法则可以帮助我们避免将所有数据先载入内存,而是直接生成SQL语句更新数据库。假如我们需要对所有产品的价格涨20%,我们通常做法如下。当产品很少的时候,对网站性能没影响。但如果产品数量非常多,把它们信息全部先载入内存会造成很大性能浪费。products=Product.objects.all()forproductinproduc...
继续阅读 >