2012-01-19 13 views
5

मैं syncdb का उपयोग करने में असमर्थ हूं क्योंकि मेरा ऐप कुछ MySQL दृश्यों का उपयोग करता है। मैंने manage.py sqlall <app> चलाया है, लेकिन यह django_content_type तालिका या auth_permission तालिकाओं के लिए SQL आउटपुट नहीं करता है। मैंने दक्षिण और डीजेंगो विकास में भी एक नजर डाली है, लेकिन दोनों को सिंकडब की आवश्यकता है, और मुझे यकीन नहीं है कि वे वैसे भी मदद करेंगे।Django manage.py - auth_permission और django_content_type टेबल बनाना

मैंने मैन्युअल रूप से टेबल पर कुछ मॉडल जोड़े हैं, लेकिन यह निराशाजनक हो रहा है, और dbsettings ऐप इंस्टॉल करने के बाद मुझे यकीन है कि मुझे अब प्रवेश करने की आवश्यकता है।

क्या कोई इन तालिकाओं और उनकी सामग्री के लिए SQL आउटपुट करने के लिए manage.py (या कुछ और) प्राप्त करने का तरीका जानता है?

धन्यवाद।

+0

सटीक स्टैकट्रेस क्या है? – armonge

+0

अंतिम पंक्ति '_mysql_exceptions.OperationalError है: (1060," डुप्लिकेट कॉलम नाम 'सर्वर आईडी')) - यह MySQL में कुछ अजीब विचारों के साथ कुछ करना है। मैंने सिंकडीबी काम करने की कोशिश करने पर छोड़ दिया है, अगर मैं खरोंच से एक और django परियोजना शुरू करता हूं तो मैं दक्षिण या विकास का उपयोग करूंगा। – hajamie

उत्तर

12

में थोड़ा और अधिक खुदाई किया, मैं इन पाया: Fixing the auth_permission table after renaming a model in Django और manage.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

@ हाजमी समाधान पुराने समर्थित संस्करण के लिए काम करता है, एक संकेत लेता है, नीचे मेरे लिए क्या काम करता है!

Django = 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 'विशेषता त्रुटि:' ऐप्स 'ऑब्जेक्ट में कोई विशेषता नहीं है' लेबल ' – kunambi

+1

यह मेरे लिए Django 1.11 में काम करता है: https://stackoverflow.com/ एक/40092780 – Crag

संबंधित मुद्दे