- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
之前问的问题但是错误是在数据库中有相同的用户名。
在我的案例中,数据库完全是空的。这是测试用例:
def create_django_contrib_auth_models_user(**kwargs):
defaults = {}
defaults["username"] = "adminadmin"
defaults["email"] = "test@testus.com"
defaults["password"] = "testpass"
defaults.update(**kwargs)
return User.objects.create(**defaults)
当我运行 python manage.py tests
时出现此错误,它导致大多数其他测试失败,
django.db.utils.IntegrityError: UNIQUE constraint failed: auth_user.username
更新
这是完整的 tests.py
文件:
import unittest
from django.urls import reverse
from django.test import Client
from .models import Branch, Storage, Worker, job, Category, StorageItem, StorageMoves, Item
from django.contrib.auth.models import User
from django.contrib.auth.models import Group
from django.contrib.contenttypes.models import ContentType
def create_django_contrib_auth_models_user(**kwargs):
defaults = {}
defaults["username"] = "adminadmin"
defaults["email"] = "test@testus.com"
defaults["password"] = "testpass"
defaults.update(**kwargs)
return User.objects.create(**defaults)
def create_django_contrib_auth_models_group(**kwargs):
defaults = {}
defaults["name"] = "group"
defaults.update(**kwargs)
return Group.objects.create(**defaults)
def create_django_contrib_contenttypes_models_contenttype(**kwargs):
defaults = {}
defaults.update(**kwargs)
return ContentType.objects.create(**defaults)
def create_branch(**kwargs):
defaults = {}
defaults["name"] = "name"
defaults.update(**kwargs)
return Branch.objects.create(**defaults)
def create_storage(**kwargs):
defaults = {}
defaults["name"] = "name"
defaults.update(**kwargs)
if "branch" not in defaults:
defaults["branch"] = create_branch()
return Storage.objects.create(**defaults)
def create_worker(**kwargs):
defaults = {}
defaults["name"] = "name"
defaults["phone"] = "01207199086"
defaults["address"] = "address"
defaults["date_joined"] = "1956-01-01"
defaults["image"] = "image"
defaults["is_active"] = False
defaults.update(**kwargs)
if "branch" not in defaults:
defaults["branch"] = create_branch()
return Worker.objects.create(**defaults)
def create_job(**kwargs):
defaults = {}
defaults["name"] = "name"
defaults.update(**kwargs)
return job.objects.create(**defaults)
def create_category(**kwargs):
defaults = {}
defaults["name"] = "name"
defaults.update(**kwargs)
return Category.objects.create(**defaults)
def create_storageitem(**kwargs):
defaults = {}
defaults["name"] = "name"
defaults["quantity"] = "15"
defaults.update(**kwargs)
if "storage" not in defaults:
defaults["storage"] = create_storage()
return StorageItem.objects.create(**defaults)
def create_storagemoves(**kwargs):
defaults = {}
defaults["name"] = "name"
defaults["quantity"] = "15"
defaults["text"] = "text"
defaults["type"] = "خروج"
defaults.update(**kwargs)
if "storage" not in defaults:
defaults["storage"] = create_storage()
if "user" not in defaults:
defaults["user"] = create_django_contrib_auth_models_user()
return StorageMoves.objects.create(**defaults)
def create_item(**kwargs):
defaults = {}
defaults["name"] = "name"
defaults.update(**kwargs)
if "category" not in defaults:
defaults["category"] = create_category()
return Item.objects.create(**defaults)
class BranchViewTest(unittest.TestCase):
'''
Tests for Branch
'''
def setUp(self):
self.client = Client()
def test_list_branch(self):
url = reverse('erp_branch_list')
response = self.client.get(url)
self.assertEqual(response.status_code, 200)
def test_create_branch(self):
url = reverse('erp_branch_create')
data = {
"name": "name",
}
response = self.client.post(url, data=data)
self.assertEqual(response.status_code, 302)
def test_detail_branch(self):
branch = create_branch()
url = reverse('erp_branch_detail', args=[branch.slug, ])
response = self.client.get(url)
self.assertEqual(response.status_code, 200)
def test_update_branch(self):
branch = create_branch()
data = {
"name": "name",
}
url = reverse('erp_branch_update', args=[branch.slug, ])
response = self.client.post(url, data)
self.assertEqual(response.status_code, 302)
class StorageViewTest(unittest.TestCase):
'''
Tests for Storage
'''
def setUp(self):
self.client = Client()
def test_list_storage(self):
url = reverse('erp_storage_list')
response = self.client.get(url)
self.assertEqual(response.status_code, 200)
def test_create_storage(self):
url = reverse('erp_storage_create')
data = {
"name": "name",
"branch": create_branch().pk,
}
response = self.client.post(url, data=data)
self.assertEqual(response.status_code, 302)
def test_detail_storage(self):
storage = create_storage()
url = reverse('erp_storage_detail', args=[storage.slug, ])
response = self.client.get(url)
self.assertEqual(response.status_code, 200)
def test_update_storage(self):
storage = create_storage()
data = {
"name": "name",
"branch": create_branch().pk,
}
url = reverse('erp_storage_update', args=[storage.slug, ])
response = self.client.post(url, data)
self.assertEqual(response.status_code, 302)
class WorkerViewTest(unittest.TestCase):
'''
Tests for Worker
'''
def setUp(self):
self.client = Client()
def test_list_worker(self):
url = reverse('erp_worker_list')
response = self.client.get(url)
self.assertEqual(response.status_code, 200)
def test_create_worker(self):
url = reverse('erp_worker_create')
data = {
"name": "name",
"phone": "phone",
"address": "address",
"date_joined": "1956-01-01",
"image": "image",
"is_active": "is_active",
"branch": create_branch().pk,
}
response = self.client.post(url, data=data)
self.assertEqual(response.status_code, 302)
def test_detail_worker(self):
worker = create_worker()
url = reverse('erp_worker_detail', args=[worker.slug, ])
response = self.client.get(url)
self.assertEqual(response.status_code, 200)
def test_update_worker(self):
worker = create_worker()
data = {
"name": "name",
"phone": "01207199086",
"address": "address",
"date_joined": "1956-01-01",
"image": "image",
"is_active": 'False',
"branch": create_branch().pk,
}
url = reverse('erp_worker_update', args=[worker.slug, ])
response = self.client.post(url, data)
self.assertEqual(response.status_code, 302)
class jobViewTest(unittest.TestCase):
'''
Tests for job
'''
def setUp(self):
self.client = Client()
def test_list_job(self):
url = reverse('erp_job_list')
response = self.client.get(url)
self.assertEqual(response.status_code, 200)
def test_create_job(self):
url = reverse('erp_job_create')
data = {
"name": "name",
}
response = self.client.post(url, data=data)
self.assertEqual(response.status_code, 302)
def test_detail_job(self):
job = create_job()
url = reverse('erp_job_detail', args=[job.slug, ])
response = self.client.get(url)
self.assertEqual(response.status_code, 200)
def test_update_job(self):
job = create_job()
data = {
"name": "name",
}
url = reverse('erp_job_update', args=[job.slug, ])
response = self.client.post(url, data)
self.assertEqual(response.status_code, 302)
class CategoryViewTest(unittest.TestCase):
'''
Tests for Category
'''
def setUp(self):
self.client = Client()
def test_list_category(self):
url = reverse('erp_category_list')
response = self.client.get(url)
self.assertEqual(response.status_code, 200)
def test_create_category(self):
url = reverse('erp_category_create')
data = {
"name": "name",
}
response = self.client.post(url, data=data)
self.assertEqual(response.status_code, 302)
def test_detail_category(self):
category = create_category()
url = reverse('erp_category_detail', args=[category.slug, ])
response = self.client.get(url)
self.assertEqual(response.status_code, 200)
def test_update_category(self):
category = create_category()
data = {
"name": "name",
}
url = reverse('erp_category_update', args=[category.slug, ])
response = self.client.post(url, data)
self.assertEqual(response.status_code, 302)
class StorageItemViewTest(unittest.TestCase):
'''
Tests for StorageItem
'''
def setUp(self):
self.client = Client()
def test_list_storageitem(self):
url = reverse('erp_storageitem_list')
response = self.client.get(url)
self.assertEqual(response.status_code, 200)
def test_create_storageitem(self):
url = reverse('erp_storageitem_create')
data = {
"name": "name",
"quantity": "quantity",
"storage": create_storage().pk,
}
response = self.client.post(url, data=data)
self.assertEqual(response.status_code, 302)
def test_detail_storageitem(self):
storageitem = create_storageitem()
url = reverse('erp_storageitem_detail', args=[storageitem.slug, ])
response = self.client.get(url)
self.assertEqual(response.status_code, 200)
def test_update_storageitem(self):
storageitem = create_storageitem()
data = {
"name": "name",
"quantity": "quantity",
"storage": create_storage().pk,
}
url = reverse('erp_storageitem_update', args=[storageitem.slug, ])
response = self.client.post(url, data)
self.assertEqual(response.status_code, 302)
class StorageMovesViewTest(unittest.TestCase):
'''
Tests for StorageMoves
'''
def setUp(self):
self.client = Client()
def test_list_storagemoves(self):
url = reverse('erp_storagemoves_list')
response = self.client.get(url)
self.assertEqual(response.status_code, 200)
def test_create_storagemoves(self):
url = reverse('erp_storagemoves_create')
data = {
"name": "name",
"quantity": "15",
"text": "text",
"type": "دخول",
"storage": create_storage().pk,
"user": create_django_contrib_auth_models_user().pk,
}
response = self.client.post(url, data=data)
self.assertEqual(response.status_code, 302)
def test_detail_storagemoves(self):
storagemoves = create_storagemoves()
url = reverse('erp_storagemoves_detail', args=[storagemoves.slug, ])
response = self.client.get(url)
self.assertEqual(response.status_code, 200)
def test_update_storagemoves(self):
storagemoves = create_storagemoves()
data = {
"name": "name",
"quantity": "quantity",
"text": "text",
"type": "دخول",
"storage": create_storage().pk,
"user": create_django_contrib_auth_models_user().pk,
}
url = reverse('erp_storagemoves_update', args=[storagemoves.slug, ])
response = self.client.post(url, data)
self.assertEqual(response.status_code, 302)
class ItemViewTest(unittest.TestCase):
'''
Tests for Item
'''
def setUp(self):
self.client = Client()
def test_list_item(self):
url = reverse('erp_item_list')
response = self.client.get(url)
self.assertEqual(response.status_code, 200)
def test_create_item(self):
url = reverse('erp_item_create')
data = {
"name": "name",
"category": create_category().pk,
}
response = self.client.post(url, data=data)
self.assertEqual(response.status_code, 302)
def test_detail_item(self):
item = create_item()
url = reverse('erp_item_detail', args=[item.slug, ])
response = self.client.get(url)
self.assertEqual(response.status_code, 200)
def test_update_item(self):
item = create_item()
data = {
"name": "name",
"category": create_category().pk,
}
url = reverse('erp_item_update', args=[item.slug, ])
response = self.client.post(url, data)
self.assertEqual(response.status_code, 302)
设置.py
import os
# Build paths inside the project like this: os.path.join(BASE_DIR, ...)
BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
# Quick-start development settings - unsuitable for production
# See https://docs.djangoproject.com/en/1.10/howto/deployment/checklist/
# SECURITY WARNING: keep the secret key used in production secret!
SECRET_KEY = os.environ.get('SECRET_KEY', 'CHANGEME')
# SECURITY WARNING: don't run with debug turned on in production!
DEBUG = True
ALLOWED_HOSTS = []
# Application definition
INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'django_extensions',
'crispy_forms',
'rest_framework',
'erp',
]
MIDDLEWARE = [
'django.middleware.security.SecurityMiddleware',
'django.contrib.sessions.middleware.SessionMiddleware',
'django.middleware.common.CommonMiddleware',
'django.middleware.csrf.CsrfViewMiddleware',
'django.contrib.auth.middleware.AuthenticationMiddleware',
'django.contrib.messages.middleware.MessageMiddleware',
'django.middleware.clickjacking.XFrameOptionsMiddleware',
]
ROOT_URLCONF = 'revo_erp.urls'
TEMPLATES = [
{
'BACKEND': 'django.template.backends.django.DjangoTemplates',
'DIRS': [],
'APP_DIRS': True,
'OPTIONS': {
'context_processors': [
'django.template.context_processors.debug',
'django.template.context_processors.request',
'django.contrib.auth.context_processors.auth',
'django.contrib.messages.context_processors.messages',
],
},
},
]
WSGI_APPLICATION = 'revo_erp.wsgi.application'
# Database
# https://docs.djangoproject.com/en/1.10/ref/settings/#databases
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.sqlite3',
'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),
}
}
# Password validation
# https://docs.djangoproject.com/en/1.10/ref/settings/#auth-password-validators
AUTH_PASSWORD_VALIDATORS = [
{'NAME': 'django.contrib.auth.password_validation.UserAttributeSimilarityValidator'}, # noqa
{'NAME': 'django.contrib.auth.password_validation.MinimumLengthValidator'}, # noqa
{'NAME': 'django.contrib.auth.password_validation.CommonPasswordValidator'}, # noqa
{'NAME': 'django.contrib.auth.password_validation.NumericPasswordValidator'}, # noqa
]
# Internationalization
# https://docs.djangoproject.com/en/1.10/topics/i18n/
LANGUAGE_CODE = 'en-us'
TIME_ZONE = 'UTC'
USE_I18N = True
USE_L10N = True
USE_TZ = True
# Static files (CSS, JavaScript, Images)
# https://docs.djangoproject.com/en/1.10/howto/static-files/
STATIC_URL = '/static/'
STATICFILES_DIRS = [
os.path.join(BASE_DIR, "static"),
]
最佳答案
我认为这是因为您在 test_update_storagemoves
中创建了两次用户对象。一次调用 create_storagemoves
一次调用 create_django_contrib_auth_models_user
。
create_storagemoves
在内部调用 create_django_contrib_auth_models_user
,所以基本上你调用了 create_django_contrib_auth_models_user
两次,基本上你创建了两个 User
具有相同 username
的实例,它可能具有 UNIQUE
约束。
关于python - Django tests.py django.db.utils.IntegrityError : UNIQUE constraint failed: auth_user. 用户名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53907647/
我是 Django 的新手。我想为 auth_user 创建一个外键 table 。 我尝试这样做: user = models.ForeignKey(auth_user) 它导致错误: NameEr
关注以下内容 good advice , 我是从 Django 的内置迁移过来的 auth.User给我自己 app.User通过执行重命名 auth_user 的迁移至 app_user .到目前为
我使用用户名='admin'和密码='hash'我将使用ID表更新auth_user UsermodelUpdate= User.objects.filter(id=RSAEnrcyption().d
在 Django 1.6 中,我用我自己的模型扩展了 django 用户模型 class Employee(models.Model): user = models.Foreign
我正在为一家零售店创建一个 Web2py 应用程序。要求是我使用 auth_user 表,并且有两种类型的用户 -“普通”和“管理员”。 我的问题是如何向 auth_user 表添加一个字段,该表具有
我正在使用多个数据库(同一 postgresql 数据库中的不同模式)开发 Django 1.9 和 python 3.3 项目。当我第一次尝试迁移项目时,出现此错误 Running migratio
我对内置 user/auth 的 django 很满意,我只想向它添加一些字段并更改表名(主要是最后一个,我可以为自定义字段使用另一个表) 所以我四处搜索,显然我们可以按照 Rename Django
我正在尝试使用 Django 的默认身份验证来处理注册和登录。 setting.py: INSTALLED_APPS = ( 'django.contrib.admin', 'djan
当访问者通过保存的 session 进行身份验证时,Django 似乎不会更新 auth_user 模型中的 last_login 字段。 因此,在这种情况下,我如何在每个 SO 用户的个人资料页面上
我正在尝试使用 AbstractUser 将字段添加到 Django 的标准用户模型中。这是我的代码: class GUser(AbstractUser): uuid = UUIDField(
我正在尝试将我的第一个小型 django 应用程序部署到 heroku。我正在关注 djangogirls 的教程:http://tutorial.djangogirls.org 我可以在本地计算机上
我正在尝试将名字和姓氏直接从 Facebook API 存储到用户身份验证模型(使用 FacebookProfile 模型进行扩展,包含 webpull、id 和 year_formed) 模型.py
我想为 auth_user 用户添加索引到 Django 内置表。我想将索引添加到 auth_user 模型的 first_name。 我该怎么做? 最佳答案 您可以直接在数据库中创建索引。例如(Po
我有一个在 Windows 2008 服务器 R2 上运行的 PHP 应用程序,它使用 PHP 的 LDAP 库根据 Active Directory 对用户进行身份验证。 根据 this answe
我的问题是我想建立一个单独的测试数据库,与我的开发数据库分开。应用程序本身与 Django-Rest-Framework 快速入门教程几乎相同,只是我使用 LDAP 后端。我的开发数据库使用 MySQ
我有一个自定义用户模型,如下所示: class User(AbstractUser): subscribe_newsletters = models.BooleanField(default=
我想将我的自定义 TrustAdministration 字段添加到 django 中的 Auth_User 表 这是我的 模型.py from django.db import models fro
如何在 Django 中查看 auth_user 模型的内容? 例如,我在我的应用程序中创建了一个名为 EmailList 的模型类。要查看电子邮件查询集,我可以执行以下操作: >>> from ap
我想获取依赖于(具有外键)特定auth_user(用户模型)的所有 django 模型 这个的 SQL 版本看起来是 something like this但该示例并不像我希望的那样递归。 理想情况下
我可以访问预定义列 (id, password, last_login,is_superuser, username, first_name, last_name, email, is_
我是一名优秀的程序员,十分优秀!