我在heroku上执行syncdb时遇到问题.我有一个自定义用户模型,当我尝试同步时,heroku给出了这个错误.
django.db.utils.ProgrammingError: relation "auth_group" does not exist
Run Code Online (Sandbox Code Playgroud)
我尝试过python manage.py makemigrations但没有任何问题得到解决.帮我找到解决方案.
我通过电子邮件覆盖默认模型AbstractUse进行授权.
applications.account.models.py
# -*- coding: utf-8 -*-
import datetime
from django.db import models
from django.contrib.auth.models import AbstractUser
class User(AbstractUser):
class Meta(AbstractUser.Meta):
swappable = 'AUTH_USER_MODEL'
USERNAME_FIELD = 'email'
Run Code Online (Sandbox Code Playgroud)
applications.account.admin.py 并在admin.py文件中使用我的自定义用户.我尝试了未注册的默认用户模型并注册自定义.
# -*- coding: utf-8 -*-
from django.contrib import admin
from django.http import HttpResponseRedirect
from django.contrib.auth.models import User
from modeltranslation.admin import TabbedTranslationAdmin
from applications.account.models import Profile, Phone, ShippingAddress, PartnerGC, Referral, Operation
from applications.account.models import User as MyUser
class UserInline(admin.StackedInline):
model = Profile
max_num = 1
can_delete = False
class OperationInline(admin.StackedInline):
model = …Run Code Online (Sandbox Code Playgroud) 简洁的问题:
在不使用through参数的情况下,在外部表上对 Django (1.5) 中的多对多关系建模有什么优点和缺点?
详细信息:
说,我有一个自定义用户模型UserProfile,我想定义与同一模型的 m2m 关系,例如实现以下关系。我可以像这样定义一个外部表(模型):
class Relationship(models.Model):
"""Relationship model"""
from_user = models.ForeignKey(settings.AUTH_USER_MODEL, related_name='from_users')
to_user = models.ForeignKey(settings.AUTH_USER_MODEL, related_name='to_users')
created = models.DateTimeField(auto_now_add=True)
is_blocked = models.BooleanField(default=False)
objects = RelationshipManager()
Run Code Online (Sandbox Code Playgroud)
在这种情况下,我应该向 UserProfile 模型添加一个 m2m 字段,如下所示?如果是,为什么?我只能使用关系模型处理用户之间的所有关系,不是吗?
class UserProfile(AbstractBaseUser, PermissionsMixin):
user_following = models.ManyToManyField('self', through=Relationship, symmetrical=False, related_name='followed')
Run Code Online (Sandbox Code Playgroud) 所以我正在制作一个自定义用户模型。这就是我在这里关注的内容。我一直在遵循教程,但仍然无法完成。
错误:RegisterForm() 缺少 1 个必需的位置参数:“请求”。
这是我的代码。
表格.py
from django import forms
from django.contrib.auth.forms import ReadOnlyPasswordHashField
from .models import User
class UserAdminCreationForm(forms.ModelForm):
"""
A form for creating new users. Includes all the required
fields, plus a repeated password.
"""
password1 = forms.CharField(label='Password', widget=forms.PasswordInput)
password2 = forms.CharField(label='Password confirmation', widget=forms.PasswordInput)
class Meta:
model = User
fields = ('email',)
def clean_password2(self):
# Check that the two password entries match
password1 = self.cleaned_data.get("password1")
password2 = self.cleaned_data.get("password2")
if password1 and password2 and password1 …Run Code Online (Sandbox Code Playgroud) 我有一个 Django 应用程序和自定义用户 - 想要测试它(进行单元测试)。我的自定义用户是 emailuser,它由电子邮件和密码字段组成。我想设置一些这样的国家mplayer,给它一个字段和一个密码。但是我下面的代码不起作用。
设置.py
AUTH_USER_MODEL = 'custom_user.EmailUser'
Run Code Online (Sandbox Code Playgroud)
我在 test.py 中的代码
from django.test import TestCase
from django.conf import settings
class MyTest(TestCase):
def setUp(self):
self.user = settings.AUTH_USER_MODEL.objects.create('testuser@test.pl', 'testpass')
def test_user(self):
self.assertEqual(self.user, 'testuser@test.pl')
Run Code Online (Sandbox Code Playgroud) 创建项目、应用程序并将该应用程序添加到我的 后INSTALLED_APPS,我尝试通过AbstractUser在我的 中进行子类化来创建自定义用户类models.py:
from django.contrib.auth.models import AbstractUser
class CustomUser(AbstractUser):
pass
Run Code Online (Sandbox Code Playgroud)
然后我尝试运行makemigrations并收到此错误:
SystemCheckError: System check identified some issues:
ERRORS:
auth.User.groups: (fields.E304) Reverse accessor for 'User.groups' clashes with reverse accessor for 'CustomUser.groups'.
HINT: Add or change a related_name argument to the definition for 'User.groups' or 'CustomUser.groups'.
auth.User.user_permissions: (fields.E304) Reverse accessor for 'User.user_permissions' clashes with reverse accessor for 'CustomUser.user_permissions'.
HINT: Add or change a related_name argument to the definition for 'User.user_permissions' or 'CustomUser.user_permissions'.
main.CustomUser.groups: (fields.E304) …Run Code Online (Sandbox Code Playgroud) 我想使用 Django 的 GCBV CreateView使用created_by当前用户自动填充模型上的字段。官方文档在这里有一个很好的例子,但我使用的是自定义用户模型,但无法使其工作。
这是我当前的设置:
# models.py
from django.conf import settings
from django.contrib.auth.models import User
from django.db import models
class Author(models.Model):
name = models.CharField(max_length=200)
created_by = models.ForeignKey(
settings.AUTH_USER_MODEL,
on_delete=models.CASCADE,
)
# views.py
from django.contrib.auth import get_user_model
from django.views.generic.edit import CreateView
from myapp.models import Author
class AuthorCreate(CreateView):
model = Author
fields = ['name']
def form_valid(self, form):
form.instance.created_by = self.request.get_user_model()
return super().form_valid(form)
Run Code Online (Sandbox Code Playgroud)
但是,在提交表单后,我收到错误:
AttributeError at /posts/new/
'WSGIRequest' object has no attribute 'get_user_model'
Run Code Online (Sandbox Code Playgroud)
如果我不尝试自动包含用户,则表单可以正常工作,这就是为什么我不认为问题出在我的自定义用户配置上。该代码如下所示:
class PostCreateView(CreateView):
model …Run Code Online (Sandbox Code Playgroud) 当我尝试使用终端创建新的超级用户时出现以下错误。
TypeError: create_superuser() missing 3 required positional arguments: 'first_name', 'last_name', and 'location'
Run Code Online (Sandbox Code Playgroud)
我在下面的评论中关注了另一个 stackoverflow 页面。在该页面中,它坚持创建一个 create_superuser 函数,但user.save(using=self._db)
此代码仍有错误,
如何使用“first_name”、“last_name”和“location”而不向它们提供任何默认值。
first_name 、 last_name 和 location 是 max_length = 30 的 CharField,并且可以有空白值。
在此自定义用户模型中,用户名被替换为 mobile_no,使其在 User 类中具有唯一性。
模型.py
from django.db import models
from django.contrib.auth.models import (
AbstractBaseUser, BaseUserManager,PermissionsMixin
)
class UserManager(BaseUserManager):
# All required field must be passed below as argument
def create_user(self, mobile_no, role, email, first_name, last_name, location, password=None, is_active=True,is_staff=False, is_admin= False):
if not mobile_no:
raise ValueError("User must have an Mobile …Run Code Online (Sandbox Code Playgroud) python django typeerror django-custom-manager django-custom-user
django ×9
python ×5
django-orm ×1
django-users ×1
heroku ×1
postgresql ×1
syncdb ×1
typeerror ×1
unit-testing ×1