簡體   English   中英

Auth.User的Django外鍵-列“ user_id”不存在

[英]Django Foreign Key of Auth.User - column “user_id” does not exist

更新:

這可能是我的問題的更好表示:

使用loadtestdata,如何填充auth.User數據庫? 我只想用偽造的用戶以及鏈接到這些偽造用戶的模擬來填充數據庫。

我已經查看了所有相關資源,但無法取得任何進展。

情況:

我正在使用Django構建仿真模型,並希望存儲仿真數據以及參數數據集。 多組模擬數據應該鏈接到每個用戶,並且多組參數數據可以鏈接到每個模擬。 因此,我嘗試在Django應用的“ models.py”下對此進行建模。

from django.db import models
from django.conf import settings
# Create your models here.


class Simulation(models.Model):
    user = models.ForeignKey(settings.AUTH_USER_MODEL, on_delete=models.CASCADE, )
    date = models.DateTimeField()

    # Each simulation has only one graph
    # Graphing parameters
    hill_num = models.CharField(max_length=3)
    div_type = models.CharField(max_length=10)
    s3_url = models.CharField(max_length=256)

    def __str__(self):
        return str(self.sim_id)


class Parameter(models.Model):
    # Each simulation can have many sets of simulation parameters
    simulation = models.ForeignKey('Simulation', on_delete=models.CASCADE)

    lsp = models.PositiveIntegerField()
    plots = models.PositiveIntegerField()
    pioneer = models.BooleanField()
    neutral = models.BooleanField()

    # for pioneers
    p_max = models.PositiveIntegerField()
    p_num = models.PositiveIntegerField()
    p_start = models.PositiveIntegerField()

    # for non-pioneers
    np_max = models.PositiveIntegerField()
    np_num = models.PositiveIntegerField()
    np_start = models.PositiveIntegerField()

    def __str__(self):
        return str(self.param_id)

./manage.py makemigrations可以工作,但是當我嘗試使用python manage.py loadtestdata auth.User:10 divexplorer.Simulation:40 divexplorer.Parameter:300填充數據庫時,它拋出此錯誤:

auth.User(pk=72): JshtkqSzw3
auth.User(pk=73): QwPfxJc_KS1k5sgH5BN98J
auth.User(pk=74): fuEhnZ
auth.User(pk=75): a
auth.User(pk=76): XjVXXLYGz3MJSfmZ54wGxXo
auth.User(pk=77): fhOWIp
auth.User(pk=78): 5tkEhKOjX2UUbFe
auth.User(pk=79): JgG4Y4PqkcapNJJOlFW1LOQ
auth.User(pk=80): fhRmfQHNim4zM8hGPzpYdkwaHI7
auth.User(pk=81): cEPQtyByKdUs8Gw58DrfNtpsCRB_
Traceback (most recent call last):
  File "manage.py", line 22, in <module>
    execute_from_command_line(sys.argv)
  File "/Users/evanma/anaconda/lib/python2.7/site-packages/django/core/management/__init__.py", line 363, in execute_from_command_line
    utility.execute()
  File "/Users/evanma/anaconda/lib/python2.7/site-packages/django/core/management/__init__.py", line 355, in execute
    self.fetch_command(subcommand).run_from_argv(self.argv)
  File "/Users/evanma/anaconda/lib/python2.7/site-packages/django/core/management/base.py", line 283, in run_from_argv
    self.execute(*args, **cmd_options)
  File "/Users/evanma/anaconda/lib/python2.7/site-packages/django/core/management/base.py", line 330, in execute
    output = self.handle(*args, **options)
  File "/Users/evanma/anaconda/lib/python2.7/site-packages/django/utils/decorators.py", line 185, in inner
    return func(*args, **kwargs)
  File "/Users/evanma/anaconda/lib/python2.7/site-packages/autofixture/management/commands/loadtestdata.py", line 225, in handle
    autofixture.create(model, count, **kwargs)
  File "/Users/evanma/anaconda/lib/python2.7/site-packages/autofixture/__init__.py", line 136, in create
    return autofixture.create(count, **create_kwargs)
  File "/Users/evanma/anaconda/lib/python2.7/site-packages/autofixture/base.py", line 554, in create
    instance = self.create_one(commit=commit, **kwargs)
  File "/Users/evanma/anaconda/lib/python2.7/site-packages/autofixture/base.py", line 519, in create_one
    instance.save()
  File "/Users/evanma/anaconda/lib/python2.7/site-packages/django/db/models/base.py", line 807, in save
    force_update=force_update, update_fields=update_fields)
  File "/Users/evanma/anaconda/lib/python2.7/site-packages/django/db/models/base.py", line 837, in save_base
    updated = self._save_table(raw, cls, force_insert, force_update, using, update_fields)
  File "/Users/evanma/anaconda/lib/python2.7/site-packages/django/db/models/base.py", line 923, in _save_table
    result = self._do_insert(cls._base_manager, using, fields, update_pk, raw)
  File "/Users/evanma/anaconda/lib/python2.7/site-packages/django/db/models/base.py", line 962, in _do_insert
    using=using, raw=raw)
  File "/Users/evanma/anaconda/lib/python2.7/site-packages/django/db/models/manager.py", line 85, in manager_method
    return getattr(self.get_queryset(), name)(*args, **kwargs)
  File "/Users/evanma/anaconda/lib/python2.7/site-packages/django/db/models/query.py", line 1076, in _insert
    return query.get_compiler(using=using).execute_sql(return_id)
  File "/Users/evanma/anaconda/lib/python2.7/site-packages/django/db/models/sql/compiler.py", line 1099, in execute_sql
    cursor.execute(sql, params)
  File "/Users/evanma/anaconda/lib/python2.7/site-packages/django/db/backends/utils.py", line 80, in execute
    return super(CursorDebugWrapper, self).execute(sql, params)
  File "/Users/evanma/anaconda/lib/python2.7/site-packages/django/db/backends/utils.py", line 65, in execute
    return self.cursor.execute(sql, params)
  File "/Users/evanma/anaconda/lib/python2.7/site-packages/django/db/utils.py", line 94, in __exit__
    six.reraise(dj_exc_type, dj_exc_value, traceback)
  File "/Users/evanma/anaconda/lib/python2.7/site-packages/django/db/backends/utils.py", line 65, in execute
    return self.cursor.execute(sql, params)
django.db.utils.ProgrammingError: column "user_id" of relation "divexplorer_simulation" does not exist
LINE 1: INSERT INTO "divexplorer_simulation" ("user_id", "date", "hi...

我花了幾個小時嘗試解決此錯誤,但無濟於事。 有任何想法嗎?

我嘗試重命名ForeignKey函數中的參數db_column,應用默認值,但是它們都不起作用。 非常感謝您的投入!

我相信您需要指定是否也應該使用隨機值創建相關模型。

請檢查文檔: http : //django-autofixture.readthedocs.io/en/latest/loadtestdata.html

說明如下:

有一些命令行選項可用。 主要是控制相關領域的行為。 如果應該使用現有數據填充前鍵或許多字段,或者是否也正在動態生成相關模型。 請查看命令的幫助頁面以獲取更多信息:

    django-admin.py help loadtestdata

不幸的是,我無法檢查一個運行中的Django實例,以便將您指向確切的選項,它的價值在於,但檢查文檔后,我會說您必須在loadtestdata中使用此選項:

    ...
    make_option('--generate-fk', action='store', dest='generate_fk', default=None,
                    help=u'Do not use already existing instances for ForeignKey relations. ' +
                    'Create new instances instead. You can specify a comma sperated list of ' +
                    'field names or ALL to indicate that all foreignkeys should be generated ' +
                    'automatically.'),
    ...

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM