2012-01-19 12 views
5

私のアプリがいくつかのMySQLビューを使用しているのでsyncdbを使用できません。 manage.py sqlall <app>を実行しましたが、これはdjango_content_typeテーブルまたはauth_permissionテーブルのSQLを出力しません。私は南とジャンゴの進化についても見てきましたが、どちらもsyncdbが必要ですが、とにかく助けてくれるかどうかはわかりません。Django manage.py - auth_permissionとdjango_content_typeテーブルを作成する

テーブルにいくつかのモデルを手動で追加しましたが、これは不満を募らせています。dbsettingsアプリケーションをインストールすると、今入力する必要があるものがわかりません。

誰もmanage.py(または何か)がこれらのテーブルとその内容のSQLを出力する方法を知っていますか?

ありがとうございました。

+0

正確なスタックトレースとは何ですか? – armonge

+0

最後の行は '_mysql_exceptions.OperationalError:(1060、"重複するカラム名 'ServerID' ")です。これはMySQLのいくつかの奇妙なビューと関係しています。私はsyncdbを動作させようとすることをあきらめてしまった。私が最初から別のdjangoプロジェクトを開始した場合、私は南か進化を使うだろう。 – hajamie

答えて

12

もう少し掘り下げて、私はこれらを見つけた: Fixing the auth_permission table after renaming a model in Djangomanage.py sql command for django models - Django

これらの出力のテーブルではなく、データ:

python manage.py sql auth 
python manage.py sql admin 

しかしthisがたくさん近づきます。最後に、私は次のようにそれを管理:

from django.contrib.auth.management import create_permissions 
from django.db.models import get_apps 
for app in get_apps(): 
    create_permissions(app, None, 2) 

from django.contrib.contenttypes.management import update_all_contenttypes 
update_all_contenttypes(interactive=True) 

これは、すべての権限と必要とされているすべてのコンテンツタイプを追加します。 interactive=Trueは古いコンテンツタイプを削除するかどうかを尋ねることを意味します。

+0

これはどのファイルに属していますか? – Zac

+0

私はこれをしてからしばらくしていますが、私はちょうど対話型のコンソールを使っていたと思います。 – hajamie

+0

これは完全に機能しました!ありがとう。 –

0

@hajamieソリューションは、古いサポートバージョンで動作し、ヒントを得て、以下は私のために働いたものです!

ジャンゴ= 1.9.7

from django.contrib.auth.management import create_permissions 
from django.contrib.auth.models import Permission 
from django.apps import apps 
def fix_user_permission(): 
    """ 
    run this method via shell whenever any amendments in any of the tables is made 
    """ 
    print "fixing user permissions" 
    # delete pre-existing user permission 
    Permission.objects.all().delete() 
    apps.models_module = True 
    create_permissions(apps, verbosity=0) 
    apps.models_module = None 
    print "process completed - fixed user permissions" 
+0

Django 1.11でこれが例外をスローする例外: 'app_label = app_config.label' \ n 'AttributeError: 'Apps'オブジェクトには属性 'label''がありません – kunambi

+1

これはDjango 1.11で私のために働いています:https://stackoverflow.com/ a/40092780 – Crag

関連する問題