任何人都可以告诉他们之间是否存在差异
>manage.py flush # or reset
Run Code Online (Sandbox Code Playgroud)
和
>manage.py sqlclear appname | python manage.py dbshell
>manage.py syncdb
Run Code Online (Sandbox Code Playgroud) 我是南方人,所以我想知道我是否需要打电话
./manage.py syncdb
Run Code Online (Sandbox Code Playgroud)
或做
./manage.py schemamigration appname --auto
./manage.py migrate appname
Run Code Online (Sandbox Code Playgroud)
在所有情况下,南方都可以自行处理.
我是在heroku上的django mongodb初学者[addon:mongolab].
heroku run python manage.py syncdb
Run Code Online (Sandbox Code Playgroud)
运行python manage.py syncdb连接到终端... up,run.2332创建表...
OperationFailure: database error: not authorized for query on database.system.namespaces consider editing privileges on the basis of data mongo
Run Code Online (Sandbox Code Playgroud)
.
>use admin
>db.addUser({ user: "myadmin", pwd: "1234", roles: ["userAdminAnyDatabase"] })
Run Code Online (Sandbox Code Playgroud)
但得到:
Error: couldn't add user: not authorized on admin to execute command
Run Code Online (Sandbox Code Playgroud)
提前致谢.
我正在尝试使用AbstractUser向Django的标准用户模型添加字段.这是我的代码:
class GUser(AbstractUser):
uuid = UUIDField(auto=True)
Run Code Online (Sandbox Code Playgroud)
这是成功的,因为从壳我可以说,
>>> a = GUser.objects.all()
>>> a
[<GUser: User1>]
>>> a[0].uuid
UUID('7d1f0b7b52144a2ea20db81ce74741e3')
Run Code Online (Sandbox Code Playgroud)
我遇到的问题是从/ admin注册一个新用户.当我创建一个新用户时,我收到一个数据库错误:
no such table: auth_user
Run Code Online (Sandbox Code Playgroud)
在我了解它之前,这是我的forms.py:
class GUserChangeForm(UserChangeForm):
class Meta:
model = get_user_model()
class GUserCreationForm(UserCreationForm):
class Meta:
model = get_user_model()
def clean_username(self):
username = self.cleaned_data["username"]
try:
get_user_model().objects.get(username=username)
except get_user_model().DoesNotExist:
return username
raise forms.ValidationError(self.error_messages['duplicate'])
Run Code Online (Sandbox Code Playgroud)
而我的admin.py:
class GUserAdmin(UserAdmin):
form = GUserChangeForm
add_form = GUserCreationForm
fieldsets = (
(None, {'fields': [('username', 'password')]}),
('Personal info', {'fields': ('is_active','is_staff','is_superuser','groups', 'user_permissions')}),
('Important dates', {'fields': ('last_login', 'date_joined')}),
#('Universal ID', …Run Code Online (Sandbox Code Playgroud) django django-forms django-admin django-authentication django-syncdb
在syncdb为模型创建表之后,有没有办法运行一些自定义SQL语句?具体来说,我想创建一些数据库视图.
因为我正在使用自己的身份验证和授权系统(使用我自己的用户/权限模型),所以我想完全禁用此标准应用程序Django.
我试着从删除相关的行MIDDLEWARE_CLASSES和
INSTALLED_APPS,但是当我使用的执行syncdb命令,仍然被创建来使用默认的验证系统中的默认表.有没有办法防止这种情况发生?我的主要问题是标准表覆盖了我想用于我自己的auth系统的表.
INSTALLED_APPS = (
'django.contrib.sessions',
'form_utils',
'org',
'auth',
'entities',
)
Run Code Online (Sandbox Code Playgroud)
我也试过用项目包预先添加应用程序,这没有任何效果.
可能还有另一种我忽视的环境吗?尽管我努力,可能导致这些标准应用程序启用的其他可能变量?
我也没有使用内置的管理系统,所以我认为这不是一个问题.
附加信息:我最近将Django 1.2升级到1.3.这可能是我问题的原因吗?
编辑:显然,这个问题是由Django 1.3的变化引起的.相关的门票在这里:http://code.djangoproject.com/ticket/15735
任何提示?
我创建了一个模型并执行了syncdb,它创建了我的模型设计的表.
之后我修改了模型并执行了makemigrations了创建迁移,忽略了syncdb已经创建的表.
所以我最终得到一个错误"关系已经存在".
为什么makemigrations从头开始创建一切?我该如何解决这种情况?
我当天的第二个不那么熟练的问题:我有一个带有四个已安装应用程序的django项目.当我运行manage.py syndb时,它只为其中两个创建表.据我所知,我的任何模型文件都没有问题,所有应用程序都在我的设置文件的INSTALLED_APPS中指定.Manage.py syndb似乎忽略了我的两个应用程序.
关于两个"被忽略"的应用程序的一个独特之处在于模型文件从其他两个应用程序导入模型并将它们用作外键(不知道这是好/坏的做法,但有助于我保持井井有条).我不认为这是问题,因为我注释掉了具有外键功能的模型,而且表格仍未创建.我很难过.
更新:当我注释掉从其他应用程序导入模型文件的行时,syndb会创建我的表.也许我不了解某些应用程序中的模型文件与其他应用程序的关系.我可以通过简单地导入它将其他应用程序中的模型用作外键.不对?
我在Django中创建了一个站点,这是我的问题如何制作这样的东西:
在init上(例如,有人运行"syncdb"?)我需要创建一个具有权限的组,并将超级用户配置文件从User扩展到UserProfile(当用户注册它不是问题但是第一个管理员/超级用户在创建应用程序时自动处理)
因为,安装后您需要在管理面板中手动执行这些操作.
抱歉我的英语,很难向我解释这个问题.我希望你明白.
可能重复:
更新django数据库以反映现有模型的更改
我过去曾经使用过Django,而我作为ORM工具遇到的挫折之一就是无法通过模型中的更改来更新现有数据库.(Hibernate做得非常好,使得更新和大量修改模型并将其应用到现有数据库非常容易.)有没有办法在不 每次擦除数据库的情况下执行此操作?在我想要玩的模型中的每次更改之后,必须重新生成管理员用户和网站变得非常古老.
django ×10
django-syncdb ×10
python ×2
django-admin ×1
django-apps ×1
django-forms ×1
django-south ×1
flush ×1
heroku ×1
migration ×1
mongodb ×1
reset ×1
syncdb ×1