2017-07-04 171 views
0

我試圖部署我的應用,但第一次運行migrate.py時,出現錯誤,說明「關係不存在」。當然不會,因爲我還沒有能夠遷移!Django - 新的遷移中「不存在關係」

翻看回溯,它似乎越來越絆倒在我的managers.py文件,但我不明白爲什麼我的經理會妨礙?

pyto(genius) 00:24 ~/genius (master)$ python manage.py migrate 
Traceback (most recent call last): 
    File "/home/cvcexport/.virtualenvs/genius/lib/python3.5/site-packages/django/db/backends/utils.py", line 64, in execute 
    return self.cursor.execute(sql, params) 
psycopg2.ProgrammingError: relation "Inventory_purchase" does not exist 
LINE 1: ...entory_purchase"."inr_value") AS "inr_value" FROM "Inventory... 
                  ^
The above exception was the direct cause of the following exception: 
Traceback (most recent call last): 
    File "manage.py", line 22, in <module> 
    execute_from_command_line(sys.argv) 
    File "/home/cvcexport/.virtualenvs/genius/lib/python3.5/site-packages/django/core/management/__init__.py", line 367, in execute_from_comm 
and_line 
    utility.execute() 
    File "/home/cvcexport/.virtualenvs/genius/lib/python3.5/site-packages/django/core/management/__init__.py", line 359, in execute 
    self.fetch_command(subcommand).run_from_argv(self.argv) 
    File "/home/cvcexport/.virtualenvs/genius/lib/python3.5/site-packages/django/core/management/base.py", line 294, in run_from_argv 
    self.execute(*args, **cmd_options) 
    File "/home/cvcexport/.virtualenvs/genius/lib/python3.5/site-packages/django/core/management/base.py", line 342, in execute 
    self.check() 
    File "/home/cvcexport/.virtualenvs/genius/lib/python3.5/site-packages/django/core/management/base.py", line 374, in check 
    include_deployment_checks=include_deployment_checks, 
    File "/home/cvcexport/.virtualenvs/genius/lib/python3.5/site-packages/django/core/management/commands/migrate.py", line 62, in _run_check 
s 
    issues.extend(super(Command, self)._run_checks(**kwargs)) 
    File "/home/cvcexport/.virtualenvs/genius/lib/python3.5/site-packages/django/core/management/base.py", line 361, in _run_checks 
    return checks.run_checks(**kwargs) 
    res = instance.__dict__[self.name] = self.func(instance) 
    File "/home/cvcexport/.virtualenvs/genius/lib/python3.5/site-packages/django/core/checks/registry.py", line 81, in run_checks 
    new_errors = check(app_configs=app_configs) 
    File "/home/cvcexport/.virtualenvs/genius/lib/python3.5/site-packages/django/core/checks/urls.py", line 14, in check_url_config 
    return check_resolver(resolver) 
    File "/home/cvcexport/.virtualenvs/genius/lib/python3.5/site-packages/django/core/checks/urls.py", line 24, in check_resolver 
    for pattern in resolver.url_patterns: 
    File "/home/cvcexport/.virtualenvs/genius/lib/python3.5/site-packages/django/utils/functional.py", line 35, in __get__ 
    res = instance.__dict__[self.name] = self.func(instance) 
    File "/home/cvcexport/.virtualenvs/genius/lib/python3.5/site-packages/django/urls/resolvers.py", line 313, in url_patterns 
    patterns = getattr(self.urlconf_module, "urlpatterns", self.urlconf_module) 
    File "/home/cvcexport/.virtualenvs/genius/lib/python3.5/site-packages/django/utils/functional.py", line 35, in __get__ 
    res = instance.__dict__[self.name] = self.func(instance) 
    File "/home/cvcexport/.virtualenvs/genius/lib/python3.5/site-packages/django/urls/resolvers.py", line 306, in urlconf_module 
    return import_module(self.urlconf_name) 
    File "/home/cvcexport/.virtualenvs/genius/lib/python3.5/importlib/__init__.py", line 126, in import_module 
    return _bootstrap._gcd_import(name[level:], package, level) 
    File "<frozen importlib._bootstrap>", line 986, in _gcd_import 
    File "<frozen importlib._bootstrap>", line 969, in _find_and_load 
    File "<frozen importlib._bootstrap>", line 958, in _find_and_load_unlocked 
    File "<frozen importlib._bootstrap>", line 673, in _load_unlocked 
    File "<frozen importlib._bootstrap_external>", line 665, in exec_module 
    File "<frozen importlib._bootstrap>", line 222, in _call_with_frames_removed 
    File "/home/cvcexport/genius/Genius/urls.py", line 12, in <module> 
    url(r'^', include('Inventory.urls', namespace="Inventory")), 
    File "/home/cvcexport/.virtualenvs/genius/lib/python3.5/site-packages/django/conf/urls/__init__.py", line 50, in include 
    urlconf_module = import_module(urlconf_module) 
    File "/home/cvcexport/.virtualenvs/genius/lib/python3.5/importlib/__init__.py", line 126, in import_module 
    return _bootstrap._gcd_import(name[level:], package, level) 
    File "<frozen importlib._bootstrap>", line 986, in _gcd_import 
    File "<frozen importlib._bootstrap>", line 969, in _find_and_load 
    File "<frozen importlib._bootstrap>", line 958, in _find_and_load_unlocked 
    File "<frozen importlib._bootstrap>", line 673, in _load_unlocked 
    File "<frozen importlib._bootstrap_external>", line 665, in exec_module 
    File "<frozen importlib._bootstrap>", line 222, in _call_with_frames_removed 
    File "/home/cvcexport/genius/Inventory/urls.py", line 3, in <module> 
    from Inventory import views 
    File "/home/cvcexport/genius/Inventory/views.py", line 67, in <module> 
    class SummaryView(InventoryView): 
    File "/home/cvcexport/genius/Inventory/views.py", line 70, in SummaryView 
    summary_table = build_summary_table() 
    File "/home/cvcexport/genius/Inventory/views.py", line 62, in build_summary_table 
    table_query = Purchase.inventory.current_summary_data(**kwargs) 
    File "/home/cvcexport/genius/Inventory/managers.py", line 31, in current_summary_data 
    for item in totals: 
    File "/home/cvcexport/.virtualenvs/genius/lib/python3.5/site-packages/django/db/models/query.py", line 256, in __iter__ 
    self._fetch_all() 
    File "/home/cvcexport/.virtualenvs/genius/lib/python3.5/site-packages/django/db/models/query.py", line 1087, in _fetch_all 
    self._result_cache = list(self.iterator()) 
    File "/home/cvcexport/.virtualenvs/genius/lib/python3.5/site-packages/django/db/models/query.py", line 109, in __iter__ 
    for row in compiler.results_iter(): 
    File "/home/cvcexport/.virtualenvs/genius/lib/python3.5/site-packages/django/db/models/sql/compiler.py", line 789, in results_iter 
    results = self.execute_sql(MULTI) 
    File "/home/cvcexport/.virtualenvs/genius/lib/python3.5/site-packages/django/db/models/sql/compiler.py", line 835, in execute_sql 
    cursor.execute(sql, params) 
    File "/home/cvcexport/.virtualenvs/genius/lib/python3.5/site-packages/django/db/backends/utils.py", line 79, in execute 
    return super(CursorDebugWrapper, self).execute(sql, params) 
    File "/home/cvcexport/.virtualenvs/genius/lib/python3.5/site-packages/django/db/backends/utils.py", line 64, in execute 
    return self.cursor.execute(sql, params) 
    File "/home/cvcexport/.virtualenvs/genius/lib/python3.5/site-packages/django/db/utils.py", line 94, in __exit__ 
    six.reraise(dj_exc_type, dj_exc_value, traceback) 
    File "/home/cvcexport/.virtualenvs/genius/lib/python3.5/site-packages/django/utils/six.py", line 685, in reraise 
    raise value.with_traceback(tb) 
    File "/home/cvcexport/.virtualenvs/genius/lib/python3.5/site-packages/django/db/backends/utils.py", line 64, in execute 
    return self.cursor.execute(sql, params) 
django.db.utils.ProgrammingError: relation "Inventory_purchase" does not exist 
LINE 1: ...entory_purchase"."inr_value") AS "inr_value" FROM "Inventory... 

我的文件是有點笨重,但是這是絆倒它的經理:

class EntryManager(Manager): 

    def user_create(self, request): 
     type = request.POST.get('type', None) 
     label = request.POST.get('label', None) 
     details = request.POST.get('details', None) 
     date_added = date.today() 
     sequence = 1 + self.model.objects.filter(type=type, active=True).count() 
     label = type + str(sequence) + "- " + label 

     entry = self.model.objects.create(
      type=type, 
      label=label, 
      details=details, 
      date_added=date_added, 
      sequence=sequence, 
      user=request.user 
     ) 

     return entry 

    def user_update(self, request, pk): 
     entry = self.model.objects.get(id=pk) 
     entry.label = entry.type + str(entry.sequence) + "- " + request.POST.get("label") 
     entry.details = request.POST.get("details") 
     entry.user = request.user 

     entry.save() 

     return entry 

    def user_delete(self, pk): 
     entry = self.model.objects.get(id=pk) 

     successors = self.model.objects.filter(type=entry.type, active=True, sequence__gt=entry.sequence) 
     for obj in successors: 
      obj.sequence -= 1 
      obj.label = obj.label.split(" ", 1)[1] 
      obj.label = obj.type + str(obj.sequence) + "- " + obj.label 
      obj.save() 

     key = entry.id 
     entry.delete() 
     return key 

    def get_entry_set(self, request): 
     """ 
     Builds selection lists allowing users to link SWOT entries to strategies. Used in swot-matrix.js with 
     setStratEntries method. 

     Args: 
      Request Delivers two relevant variables: 
       s_or_w: Indicates "Y-axis" (strength or weakness) requirement. 
       o_or_t: Indicates "X-axis" (opportunity or threat) requirement. 

     Returns: 
      All active entries that match each requested type, packaged in dictionaries and ready for JSON delivery. 
     """ 

     # Build Dictionary of active Strengths or Weaknesses 
     s_or_w = request.GET.get("s_or_w") 
     strengths_or_weaknesses = self.model.objects.filter(type=s_or_w, active=True) 
     s_or_w_data = [] 
     for entry in strengths_or_weaknesses: 
      s_or_w_data.append({ 
       "id": entry.id, 
       "label": entry.label 
      }) 

     # Build Dictionary of active Opportunities or Threats 
     o_or_t = request.GET.get("o_or_t") 
     opportunities_or_threats = self.model.objects.filter(type=o_or_t, active=True) 
     o_or_t_data = [] 
     for entry in opportunities_or_threats: 
      o_or_t_data.append({ 
       "id": entry.id, 
       "label": entry.label, 
      }) 

     # Combine for for JSON delivery. 
     data = { 
      "s_or_w": s_or_w_data, 
      "o_or_t": o_or_t_data 
     } 

     return data 

這是關聯的模型:

class Entry(GenericObject): 
    type = models.CharField(max_length=1, choices=choices.ENTRY_CHOICES) 
    sequence = models.IntegerField() 
    label = models.CharField(max_length=124) 
    actions = managers.EntryManager() 
    objects = models.Manager() 

    class Meta: 
     ordering = ["id"] 

我是違反規定的地方?爲什麼migrate.py抱怨全新postgres數據庫中缺失的列?

+1

蟒蛇manage.py makemigrations APP_NAME 蟒蛇manage.py sqlmigrate svace VERSION_NUMBER #4第一個數字 蟒蛇manage.py遷移 如果你不能做到這一點,我應掃描模式 –

回答

0

我從來沒有想過出了什麼問題。這個錯誤會在我的經理的不同位置出現,但總會首先在視圖中觸發。我只是評論了所有的視圖和urlpatterns,運行遷移,然後恢復文件。

1

首先遷移該特定應用程序。 python manage.py遷移app_name。這將解決依賴關係。

+0

很好的建議,但它沒」不幸的是,在這種情況下解決。無論我遷移哪個應用程序,我都會得到相同的錯誤 –