今天,我将与您分享Django如何使用用户表的知识。它还将解释Django的用法。如果您可以解决您现在面临的问题,请不要忘记注意此网站。让我们现在开始!
本文目录清单:
1.如何正确使用用户模型2中的组视图,django管理员如何在用户中添加数据3,django如何更新Django 4.中的用户扩展表中的数据。如何实现扩展用户模块5,如何在Django?6中动态操作数据库字段。Django默认用户表更换和扩展1.确定用户模型
推荐以下方法来确定Django项目中使用的用户模型:
#使用默认用户模型时
来自django.contrib.auth import get_user_model
get_user_model()
类'django.contrib.auth.models.user'
#使用自定义用户模型时
来自django.contrib.auth import get_user_model
get_user_model()
类'xxx.models.userprofile'
2使用设置.auth_user_model
由于Django 1.5,用户可以自定义用户模型。如果外部密钥需要使用用户模型,则正式推荐的方法如下:
在设置中设置auth_user_model:
#settings.py
#格式为“ django_app名称.model名称”
auth_user_model =“ myapp.newuser”
在型号中使用
#models.py
来自django.conf导入设置
来自django.db导入模型
班级文章(Models.Model):
作者= models.foreignkey(settings.auth_user_model)
title = models.charfield(max_length = 255)
注意:请勿在外键中使用get_user_model()。
3.自定义用户模型
1)扩展抽象使用者类
#myApp/models.py
来自django.contrib.auth.models import Abstractuser
来自django.db导入模型
班级新闻器(摘要使用者):
new_field = models.charfield(max_length = 100)
设置在设置.py:
1
auth_user_model =“ myapp.newuser”
2)扩展抽象库类别类
AbstractBaseuser仅包含3个字段:密码,last_login和is_Active。如果您对Django用户模型的默认first_name(last_name)不满意,也可以选择此方法。
3)使用OneTooneField
#profiles/models.py
来自django.conf导入设置
来自django.db导入模型
从口味。模型进口风味
Easterprofile类(Models.Model):
user = models.onetoonefield(settings.auth_user_model)
FAREE_ICE_CREAM =模型。外国钥匙(味道,null = true,空白= true)
类ScooperProfile(Models.Model):
user = models.onetoonefield(settings.auth_user_model)
scoops_scooped = model.intergerfield(默认= 0)
类InventorProfile(Models.Model):
user = models.onetoonefield(settings.auth_user_model)
flavors_invented =型号。
添加到您的admin.py
从django导入表格
来自django.contrib导入管理
来自django.utils.translation importettext_lazy as _
来自django.contrib.auth.models导入用户,组
class groupAdminform(forms.modelform):
用户= forms.modelmultiplechoicefield(
querySet = user.objects.all(),
必需= false,
widget = fileedSelectMultiple(
verbose_name = _('用户'),
is_stacked = false
治愈
治愈
元类:
模型=组
def __init __(self, *args,** kwargs):
super(groupAdminform,self).__ init __(*args,** kwargs)
如果self.intance和self.instance.pk:
self.fields ['用户']。初始= self.instance.users.all()
def保存(self,commit = true):
group = super(groupAdminform,self).save(commit = false)
如果提交:
group.save()
如果group.pk:
group.users = self.clenet_data ['用户']
self.save_m2m()
返回组
class groupAdmin(admin.modeladmin):
form = groupAdminform
admin.Site.unregister(组)
Admin.Site.Register(Group,GroupAdmin)
将用户类的以下扩展添加到Models.py:
#=========================================================================================
班级用户版(Models.Model):
user = models.onetoonefield(用户)
major = model.textfield(default ='',空白= true)
地址= model.charfield(max_length = 200,默认值='',空白= true)
def __unicode __(self):
返回self.user.username
def create_user_profile(发件人,实例,创建,** kwargs):
“”保存新用户时创建用户封装。
如果创建:
profile = userProfile()
propile.user =实例
profile.save()
#post_save.connect(create_user_profile,sender =用户)
”“”“我不明白,我必须对上线发表评论,以便没有错误,否则将有重复的条目'2'对于键'user_id'”)。是正常的,但与官方文件有差异。混乱,“”“”
#============================================================================= 123456789111113141516171819
您还需要修改Admin.py
““用户模块扩展”“”“”“”
class profileinline(admin.stackedinline):
型号=用户撰写
#fk_name ='用户'
max_num = 1
can_delete = false
类Customuseradmin(UserAdmin):
inlines = [profileinline,],]
admin.Site.unregister(用户)
Admin.Site.Register(用户,CustomuserAdmin)
“”““用户模块扩展”“” 12345678910111213
修改设置的配置.py,增加
“”“用户模块扩展零件”“”“”“”
auth_profile_module ='djangoadmin.myadmin.userprofile'
“”“用户模块扩展完成”“ 123
根据官方说明,这是应用标签和扩展类的名称。它也应该是创建的应用程序的名称。正式推荐的方法分为“两部分”。连接,我在这里有三个部分,没有错误。
然后运行python manage.py syncdb,它将在数据库中创建一个响应表,并且有一个User_ID外键字段。
最后,让我们运行程序并输入用户界面的增加。您会发现您扩展的字段已显示
每次添加用户时,相应的数据都会添加到扩展表中。修改时,还将修改相应的数据。USER_ID是关联的,因此用户模型扩展已完成。
如果要在扩展程序中获取内容,则可以通过request.user.get_profile()的方法获取它。地址。获得用户对象后,您可以轻松获得扩展类。
1定义使用OneToOneField扩展的方式的方法。2第二种方法是Django 1.5之后的方法。通过从AbstractBaseuser,PermissionsMixin开始,可以创建一个自定义的用户模型,并且自定义baseusermanager可以使用Django创建用户。
Django的ORM系统不支持删除字段的操作,这意味着当您编写模型模型文件时,定义了此用户表,然后字段telphone定义将表结构写入数据库。如果删除模型文件的电信,则不会对数据库进行修订。这次,您必须使用本机SQL来求解它,也就是说,必须为DJANGO编写SQL语句才能执行它。在这种情况下,会有很多问题,这意味着在执行Alter Table用户删除列telphone之后,您的模型文件不知道您已经使用了用户来使用用户。Django应用程序的崩溃。因此,动态字段并不容易。这也可能是我可以浅薄地学习。我不太了解。也许有些人可以做到。但是尽量不要尽可能多地删除字段。
您可以重新指定用户名field username_field
您可以重新指定Edail字段email_field
在CreateSuperuser中创建超级用户时,也有命令行,以提醒信息字段以输入surection_fields
配置完成后,无法成功启动,因为缺少Django用户类的某些默认方法需要继承AbstractBaseuser类
如果您不想创建django amth表,则可以在django.contrib.auth中删除django设置。
Django如何使用用户表和Django的用法的介绍已经结束。我想知道您是否从中找到了所需的信息?如果您想进一步了解此信息,请记住要收集对该网站的关注。