django模型建筑表名称错误

时间:2016-10-27 03:33:17

标签: python django postgresql amazon-web-services amazon-ec2

我的ec2免费套餐上有一个postgresql RDS实例和我的ec2实例。我本应该使用EB,但是在我有很多内置之前并没有真正知道它,并且对于开始使用新的ami并不感到兴奋。我正在尝试构建我与db的第一次交互,有一个名为server_config的表,创建为:

CREATE TABLE SERVER_CONFIGS
(
  config_key VARCHAR(63) NOT NULL,
  config_value VARCHAR(63) NOT NULL,
  UNIQUE (config_key)
);
INSERT INTO SERVER_CONFIGS (config_key,config_value) 
  VALUES ('ClientMustVerify','TRUE');
INSERT INTO SERVER_CONFIGS (config_key,config_value) 
  VALUES ('Auditing','FALSE');
COMMIT;

在我的django应用程序中,我有: models.py:

from django.db import models

class serverConfig(models.Model):

    config_key = models.CharField(max_length=63)
    config_value = models.CharField(max_length=63)

view.py:

的摘录
from limbo.models import serverConfig
def editServer(request):
    myConfigs = serverConfig.objects.all()
    configHtml = ""
    # for item in myConfigs #serverConfig.objects.values()
    #   configHtml += item.config_key + "\t" + item.config_value + "\n"

    if request.method == 'POST':
        form = serverForm(request.POST)
        if form.is_valid():
            integer = form.cleaned_data['int_field']
            request.session['integer'] = integer

            # call out to limboLogic.py to update values, add them to the session
            message = 'The value \'' + str(integer) + '\' has been updated.'
            return render(request, 'limboHtml/ServerConfiguration.html', {'form': form, 'SubmitMessage': message, 'CurrentConfigs': myConfigs})
        else:
            message = 'The server configuration has NOT been updated.' + '\n'
            message += ', '.join("%s=%r" % (key,val) for (key,val) in form.errors.iteritems()) + '\n' 
            # message += ', '.join("%s=%r" % (key,val) for (key,val) in form.non_field_errors.iteritems()) + '\n' 
            return render(request, 'limboHtml/ServerConfiguration.html', {'form': form, 'SubmitMessage': message, 'CurrentConfigs': myConfigs})
    # if a GET (or any other method) we'll create a blank form
    try:
        del request.session['integer']
    except KeyError:
        pass
    form = serverForm()
    return render(request, 'limboHtml/ServerConfiguration.html', {'form': form, 'SubmitMessage': '', 'CurrentConfigs': myConfigs})

错误消息:

  

文件   “/home/ec2-user/limbo/limboenv/local/lib/python2.7/site-packages/django/db/backends/utils.py”   第64行,执行中       return self.cursor.execute(sql,params)ProgrammingError:关系“limbo_serverconfig”不存在第1行:... ig_key“,   “limbo_serverconfig”。“config_value”FROM“limbo_ser ...

为什么它会在表格的开头追加limbo_?我可以改变这种方式吗?我应该在表格中使用我的应用名称(或者是我的项目名称?它们被称为同样的东西......愚蠢的民意调查教程)?

关于ec2上的linux ami的Django 1.10和python 2.7

1 个答案:

答案 0 :(得分:2)

Django为每个模型创建一个表。表的默认名称为app_name + '_' + model_name。如果您不希望它成为表格的名称,您可以通过在模型的Meta类中指定db_table来覆盖它。

参考:https://docs.djangoproject.com/en/1.10/ref/models/options/#db-table

<强>建议

请不要使用与项目名称相同的应用程序来编写应用程序逻辑。该应用程序应始终只包含项目设置