2012-01-19 18 views
5

Uygulamamın bazı MySQL görünümleri kullanması nedeniyle syncdb'yi kullanamıyorum. Ben manage.py sqlall <app> çalıştırın, ancak bu django_content_type tablosu veya auth_permission tabloları için SQL çıktı. Ayrıca güneye ve django evrimine bir göz attım, ama her ikisinin de syncdb'ye ihtiyacı var ve yine de yardımcı olabileceklerinden emin değilim.Django manage.py - auth_permission ve django_content_type tabloları oluşturma

Bazı modelleri tablolara el ile ekledim, ancak bu sinir bozucu hale geliyor ve dbsettings uygulamasını yükledim, şimdi girmem gereken şeyden emin değilim.

Herkes, bu tablolar ve bunların içerikleri için SQL çıkışında manage.py (veya başka bir şey) elde etmenin bir yolunu biliyor mu?

Teşekkürler.

+0

tam StackTrace nedir 1.9.7? – armonge

+0

Son satır '_mysql_exceptions.OperationalError: (1060," Duplicate column name 'ServerID' ")' - MySQL'in bazı garip görünümleriyle ilgisi var. Ben syncdb çalışmayı denemekten vazgeçtim, eğer sıfırdan başka bir django projesine başlarım, güneye ya da evrime gideceğim. – hajamie

cevap

12

Biraz daha fazla kazma işlemi yaptıktan sonra bunları şu şekilde buldum: Fixing the auth_permission table after renaming a model in Django ve manage.py sql command for django models - Django.

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

Ama çok daha yakın this alır: Veri

Bu çıkış tabloları değil. Sonunda aşağıdaki ile yönetilen:

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) 

Bu da tüm izinleri ve gerekli tüm içerik türlerinin ekler. interactive=True, eski içerik türlerini kaldırmak isteyip istemediğinizi soran anlamına gelir.

+0

Bu dosyaya ait dosya nedir? – Zac

+0

Bunu yaptığımdan beri bir süre geçti, ama ben sadece etkileşimli konsolu kullanıyordum. – hajamie

+0

Bu mükemmel bir şekilde çalıştı! Teşekkürler. –

0

@hajamie çözümü eski desteklenen sürümü için çalışıyor, bir ipucu alıyor, aşağıda benim için çalışılan şey!

Django =

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'de bu durum İstisna: 'app_label = app_config.label' \ n 'AttributeError: 'Apps' nesnesinin 'label' özelliği yok – kunambi

+1

Bu, benim için Django 1.11'de çalıştı: https://stackoverflow.com/ a/40092780 – Crag