当前位置: 首页 > 网络应用技术

如何使用用户表(Django使用)

时间:2023-03-06 16:25:13 网络应用技术

  今天,我将与您分享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的用法的介绍已经结束。我想知道您是否从中找到了所需的信息?如果您想进一步了解此信息,请记住要收集对该网站的关注。