我想创建一个没有登录的用户子集......基本上是一种将摄影师字段添加到照片而不需要与该人关联的完整帐户的方法(因为在很多情况下,他们会从未真正登录过该网站).需要注意的是,我还希望以后能够为他们启用帐户.
所以,我认为这个问题变成了设置一个与User表关联的"People"表的最佳方法,而没有用UserProfile实际扩展User表.
我是Django的新手,我在创建自定义用户模型时遇到了一些问题.我遵循了django文档中的每一步.这是我的模型:
class UserProfile(models.Model):
user = models.OneToOneField(User)
comment = models.BooleanField()
score = models.IntegerField(null=True)
profilpic = models.ImageField(upload_to="/profilepics")
bio = models.CharField(max_length=140)
Run Code Online (Sandbox Code Playgroud)
然后我用django-registration创建了几个用户.但是当我去管理员并尝试删除我创建的用户或者当我尝试单击用户名时,我收到此错误:
AttributeError at /admin/auth/user/3/
'UserProfile' object has no attribute 'username'
Exception Value:
'UserProfile' object has no attribute 'username'
Exception Location: /Users/marc-antoinelacroix/Desktop/Site/sportdub/projet/models.py in __unicode__, line 14
Run Code Online (Sandbox Code Playgroud)
所以我想我必须在我的UserProfile模型中创建一个"用户名",并将其与django用户的用户名相关联,但我不知道该怎么做...
欢迎任何帮助.
谢谢!
当我想使用简单的CreateView创建新用户时,我有问题.一切都很好,我可以创建用户,但是当我想用新创建的用户进行日志记录时,我无法做到.
无效的密码格式或未知的散列算法.
未存储原始密码,因此无法查看此用户的密码,但您可以使用此表单更改密码.
这是我的代码:
model.py
from django.db import models
from django.contrib import admin
from django.contrib.auth.admin import UserAdmin
from django.contrib.auth.models import AbstractUser, UserManager
class CustomUser(AbstractUser):
"""app setting of user"""
url = models.URLField(u'Site URL', max_length=100, null=True, unique=True)
admin.site.register(CustomUser, UserAdmin)
Run Code Online (Sandbox Code Playgroud)
urls.py
from django.conf.urls.defaults import *
from models import CustomUser
from django.views.generic import CreateView
from django.contrib.auth.decorators import login_required
from django.core.urlresolvers import reverse
urlpatterns = patterns('',
url(r'^create_user/$',(CreateView.as_view(model=CustomUser, get_success_url =lambda: reverse('create_user'),
template_name="create_user.html")), name='create_user'),
)
Run Code Online (Sandbox Code Playgroud)
create_user.html
<div title="Create Form " id="/create_user">
<p> <b>Create account:</b> </p>
{{ …Run Code Online (Sandbox Code Playgroud) 环境:Django 1.5.1 + Django CMS 2.4.1 + Zinnia最新+我的自定义应用+自定义Django CMS插件
基本上我可以扩展默认的Django(1.5.X)用户模型,如NetTuts +上的Django Ribbit Tutorial
要么
在段落中替换完全自定义的模型,如Django Dev doc或Django2Scoops示例:"处理用户模型"
为了测试我决定使用子类AbstractUser来自Django2Scoops书:"如果您喜欢Django的用户模型字段,请选择此选项,但需要额外的..fields."
但是我有以下错误:
notification.noticesetting:'user'定义了与模型'auth.User'的关系,该模型已被换出.更新关系以指向settings.AUTH_USER_MODEL.cmsplugin_zinnia.latestentriesplugin:'authors'定义了与模型'auth.User'的关系,该模型已被换出.更新关系以指向settings.AUTH_USER_MODEL.
cms.pageuser:'created_by'定义了与模型'auth.User'的关系,该模型已被换出.更新关系以指向settings.AUTH_USER_MODEL.cms.pageusergroup:'created_by'定义了与模型'auth.User'的关系,该模型已被换出.更新关系以指向settings.AUTH_USER_MODEL.
经过几个小时的阅读和测试,我找到了
正如错误消息所示 - 您需要更新关系以指向settings.AUTH_USER_MODEL.第二个错误("模型已被换出......")是您直接引用用户模型这一事实的副作用.更改ForieignKey引用后,第三个错误将消失.我们已尽力确保顺利过渡到新的用户模型,但它不能完全透明.应用编写者需要将他们的应用更新为1.5兼容.基本上,如果Django 1.4应用程序包含对用户的硬编码外键引用,则它与Django 1.5不会100%兼容.拜托,你能举个更多例子吗?
和Django/Python:更新关系以指向settings.AUTH_USER_MODEL
在settings_example.py中,您有AUTH_USER_MODEL ='users.User'.但是你使用的应用程序 - menu.bookmark--与django.contrib.auth.User有关 - 你不能同时拥有这两者.设置AUTH_USER_MODEL意味着您要用自己的内置Django用户模型替换它.有关 详细信息,请参见 http://procrastinatingdev.com/django/using-configurable-user-models-in-django-1-5/.
但我不明白我该怎么解决这个问题.
我需要什么:
- 用户与学院班级(一个学院 - >更多用户)相关联
- 用户或机构可以拥有不同的权限,并查看不同的django cms页面/插件.
- 用户的几个字段.
Subclass AbstractUser是正确的吗?
如何解决"换出"错误?
我应该创建类似于OpenTreeMap代码的东西
这个代码是不是已经弃用了?
谢谢!
django django-models django-authentication django-cms django-users
我一直在寻求扩展Django用户模型,虽然我有信心我可以使它工作,但我确实想要了解一行代码.
我一直在参考以下教程:http: //blog.tivix.com/2012/01/06/extending-user-model-in-django/
但我不能为我的生活理解下面的代码行如何工作:
User.profile = property(lambda u: u.get_profile() )
Run Code Online (Sandbox Code Playgroud)
如果我理解正确,这会将User.profile的getter方法设置为匿名函数,该函数将用户作为参数并返回配置文件,但是,如果我引用myuser.profile,则实际传递的参数何时?
我希望我能正确地沟通自己.任何帮助理解这一点将不胜感激!
为了在Django 1.5.x中创建新的用户模型,有两种方法:
AbstractUser类,它是您获得的默认用户模型,这样您就可以使用所需的任何属性扩展它.但是,如果要删除任何字段,则技术上可行,但不建议使用 ; 我相信,即使可以做到,也违背了OOP原则.因此,如果您想要更改当前的用户模型,则有第二种方法.AbstractBaseUser,通过查看代码提供了非常基本的功能.除非您从默认的Django用户模型中复制它,否则您将错过权限,配置文件检索和绝对URL构造的所有优点.以上是我对情况的理解.如果我错了,请纠正我,但这并不意味着如果我想简单地username从模型中删除该字段,因为我根本不需要它,我必须复制粘贴框架中提供的模型代码和继承AbstractBaseUser和PermissionsMixin?对于这么简单的事情,这种方法对我来说看起来并不是很漂亮,而且它看起来有点奇怪,因为我很确定自定义用户模型的引入主要是因为email字段的流行用例作为用户标识符而不是username.
请你的想法(和更正).
我的python项目的网址在这里:https : //github.com/abylikhsanov/social
我正在尝试实现密码更改表单,以便用户可以更改他或她的密码。我该如何实施?应用程序应跟踪先前的密码,并且不应允许用户使用先前使用的密码。另外,我想实现重置密码功能。
我正在尝试将表单数据保存给匿名用户,但是当我尝试在 CreateView 中保存一些表单数据时出现以下错误。我不清楚问题是什么?
ValueError: Cannot assign "<SimpleLazyObject: <django.contrib.auth.models.AnonymousUser object at 0x11126bc18>>": "EUser.user" must be a "User" instance.
Run Code Online (Sandbox Code Playgroud)
楷模:
class EUser(models.Model):
online_account = models.BooleanField()
supplier1 = models.OneToOneField(SupplierAccount)
supplier2 = models.OneToOneField(SupplierAccount)
supplier3 = models.OneToOneField(SupplierAccount)
address = models.OneToOneField(Address)
user = models.ForeignKey(settings.AUTH_USER_MODEL)
class SupplierAccount(models.Model):
supplier = models.ForeignKey(Supplier)
username = models.CharField(max_length=255)
password = models.CharField(max_length=255)
Run Code Online (Sandbox Code Playgroud)
形式:
class ServiceTypeForm(forms.ModelForm):
# BOOL_CHOICES = ((False, 'No'), (True, 'Yes'))
# online_account = forms.BooleanField(widget=forms.RadioSelect(choices=BOOL_CHOICES))
def __init__(self, *args, **kwargs):
super(ServiceTypeForm, self).__init__(*args, **kwargs)
self.fields['service_type'].initial = 'D'
class Meta:
model = EUser
fields = …Run Code Online (Sandbox Code Playgroud) 我是 django 的新手,在从 AbstractBaseUser 模型创建用户时遇到了一些困难。现在我开始怀疑我的用户模型是否没有以正确的方式构建。这是我的用户模型
from django.db import models
from django.contrib.auth.models import AbstractBaseUser
class User(AbstractBaseUser):
'''
Custom user class.
'''
username = models.CharField('username', max_length=10, unique=True, db_index=True)
email = models.EmailField('email address', unique=True)
joined = models.DateTimeField(auto_now_add=True)
is_active = models.BooleanField(default=True)
is_admin = models.BooleanField(default=False)
Run Code Online (Sandbox Code Playgroud)
并且用户仅在此其他模型中被引用
from django.db import models
from user_profile import User
class Tweet(models.Model):
'''
Tweet model
'''
user = models.ForeignKey(User)
text = models.CharField(max_length=160)
created_date = models.DateTimeField(auto_now_add=True)
country = models.CharField(max_length=30)
is_active = models.BooleanField(default=True)
Run Code Online (Sandbox Code Playgroud)
然后当我尝试将我的新模型迁移到 db 时
Traceback (most recent call last):
File "manage.py", …Run Code Online (Sandbox Code Playgroud) 我正在创建一个自定义用户模型。
我运行命令python manage.py makemigrations accounts然后运行python manage.py migrate accounts它输出以下错误:
Traceback (most recent call last):
File "manage.py", line 22, in <module>
execute_from_command_line(sys.argv)
File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/django/core/management/__init__.py", line 367, in execute_from_command_line
utility.execute()
File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/django/core/management/__init__.py", line 359, in execute
self.fetch_command(subcommand).run_from_argv(self.argv)
File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/django/core/management/base.py", line 294, in run_from_argv
self.execute(*args, **cmd_options)
File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/django/core/management/base.py", line 345, in execute
output = self.handle(*args, **options)
File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/django/core/management/commands/migrate.py", line 86, in handle
executor.loader.check_consistent_history(connection)
File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/django/db/migrations/loader.py", line 292, in check_consistent_history
connection.alias,
django.db.migrations.exceptions.InconsistentMigrationHistory: Migration admin.0001_initial is applied before its dependency accounts.0001_initial on …Run Code Online (Sandbox Code Playgroud) django-users ×10
django ×9
python ×5
django-admin ×2
database ×1
django-cms ×1
model ×1
python-2.7 ×1