我想在数据库里添加一个职员。我是通过数据迁移来实现的。我可以通过迁移添加用户,但无法将其分配给我尝试创建的StaffPosition的User\ id。我得到的错误是一个ValueError,它说我需要使用一个“User”实例,但我以为我正在这样做。你知道吗
我使用ipdb对此进行了故障排除,并查看了一些属性的值。我也尝试过用不同的方式抓取用户,比如用用户实例的pk或id。我做的另一件事是注释掉create\u urechr\u user中的所有代码行,除了创建user对象的部分。这样,我就可以成功地将用户添加到数据库中。但我不能让我的员工身份证成为那个用户。你知道吗
# -*- coding: utf-8 -*-
# Generated by Django 1.11.6 on 2019-02-08 21:23
from __future__ import unicode_literals
from django.db import migrations
from django.contrib.auth.models import User
def create_urechr_user(apps, schema_editor):
staffPosition = apps.get_model("hr", "staffPosition")
User.objects.create_user(
username = "myName",
password = "test",
is_active = True,
email = "",
)
staff = staffPosition.objects.get(pk = 95)
user = User.objects.get(username = "myName")
staffPosition.objects.create(
parent_staff_position = staff,
user_id = user,
title = "Testing Title",
)
class Migration(migrations.Migration):
dependencies = [
('hr', '0003_add_verbose_name_20190213_1519'),
]
operations = [
migrations.RunPython(create_urechr_user),
]
ValueError: Cannot assign "<User: urechr>": "StaffPosition.user_id" must be a "User" instance.
此错误的原因是您将迁移定义的模型与应用程序定义的模型混合使用。具体地说,从应用程序导入
User
模型,得到staffPosition
作为apps.get_model
。你知道吗您必须使用
apps.get_model
而不是使用from django.contrib.auth.models import User
来获取这两个模型:您可以在这里阅读AUTH\u USER\u MODEL:https://docs.djangoproject.com/en/2.2/ref/settings/#std:setting-AUTH_USER_MODEL
您也可以在django bugtracker中检查这个问题,问题与您的类似:https://code.djangoproject.com/ticket/29283
看起来有机会让Django错误报告更方便用户:)
相关问题 更多 >
编程相关推荐