标签: django-database

如何配置 Django 以在启动时重新初始化并填充整个数据库?

假设您正在使用新 Django 应用程序的第一个版本,并且不断添加更改模型。

作为数据驱动的应用程序,您主要致力于自定义 django 管理。

在这种情况下syncdb不太有用,因为它将无法更新模型。South很有趣,但是当您在第一个版本中工作时,它没有太大意义。

删除数据库并重新初始化它需要几个命令,并且您还需要手动输入新的管理员帐户。

您建议如何设置您的开发环境,以便您可以:

  • 文件更改时自动重启 django 服务器
  • django 重新启动时自动重新初始化数据库

因此,我希望能够向模型添加新属性、切换到浏览器并刷新管理页面并查看新属性。

database django django-admin django-database

1
推荐指数
1
解决办法
1666
查看次数

Django 1.8错误:未指定数据库装置

我使用的是sqlite数据库,应用后python manage.py dumpdata我在中添加了新的postgresql数据库设置settings.py

DATABASES = {
'default': {
    'ENGINE': 'django.db.backends.postgresql_psycopg2',
    'NAME': 'music',                      
    'USER': '**',
    'PASSWORD': '****',
    'HOST': '127.0.0.1',
    'PORT': '5432',
    }
  }
Run Code Online (Sandbox Code Playgroud)

但是,当我尝试将数据加载到新postgresql数据库中时,出现以下错误

C:\Users\Saket\musicalguru>python manage.py loaddata
usage: manage.py loaddata [-h] [--version] [-v {0,1,2,3}]
                      [--settings SETTINGS] [--pythonpath PYTHONPATH]
                      [--traceback] [--no-color] [--database DATABASE]
                      [--app APP_LABEL] [--ignorenonexistent]
                      fixture [fixture ...]
manage.py loaddata: error: No database fixture specified. Please provide the  path of at least one fixture in the command line.
Run Code Online (Sandbox Code Playgroud)

无法理解错误是什么。我的sqlite数据库中已经有数据,所以我也需要数据库中的新数据postgresql …

python django postgresql django-database

0
推荐指数
1
解决办法
6218
查看次数

Django modeltranslation - 无法获取和查看原始字段

我正试图django-modeltranslation在我的项目中使用.

目前,仅适用于Tag具有一个字段的模型 - name.

我已创建并注册TranslationOptions,然后makemigrationsmigrate.

现在我无法访问原始name文本.它似乎被''(空字符串)替换,但它不是:

In [6]: Tag.objects.first()
Out[6]: <Tag: >

In [7]: Tag.objects.first().name
Out[7]: u''

In [8]: Tag.objects.first().__dict__
Out[8]: 
{'_state': <django.db.models.base.ModelState at 0x7fc96ad41710>,
 'id': 1,
 'name': u'Sport',
 'name_cs': None,
 'name_de': None,
 'name_en': None,
 'name_es': None,
 'name_fr': None,
 'name_ru': None,
 'name_sk': None}

In [9]: Tag.objects.first().name
Out[9]: u''
Run Code Online (Sandbox Code Playgroud)

你知道如何访问这个领域吗?

编辑

models.py

class Tag(models.Model):
    name = models.CharField(max_length=50,verbose_name=u'Tag',unique=True)


    def __unicode__(self):
        return self.name
Run Code Online (Sandbox Code Playgroud)

translation.py

from modeltranslation.translator import register, TranslationOptions

from …
Run Code Online (Sandbox Code Playgroud)

python django django-database django-modeltranslation django-2.0

0
推荐指数
1
解决办法
499
查看次数

Django Query中的PostgreSQL编程错误

我有一个查询,如下所示,该查询返回特定课程(学年)中特定学期(学期)中特定班级的所有学生的成绩:

grades = Grade.objects.filter(term='First', student__in_class=1,session=1).order_by('-total')
Run Code Online (Sandbox Code Playgroud)

然后是另一个对成绩进行注释的查询,以获取“总计”字段的总和。

grades_ordered = grades.values('student')\
    .annotate(total_mark=Sum('total')) \
    .order_by('-total_mark')
Run Code Online (Sandbox Code Playgroud)

最初,一切正常,直到我从使用SQLite迁移到PostgreSQL时,以下错误开始出现。

错误:

function sum(character varying) does not exist
LINE 1: SELECT "sms_grade"."student_id", SUM("sms_grade"."total") AS...
                                         ^
HINT:  No function matches the given name and argument types. You might need to add explicit type casts.
Run Code Online (Sandbox Code Playgroud)

编辑:这是我的模型

class Grade(models.Model):
    session = models.ForeignKey(Session, on_delete=models.CASCADE)
    term = models.CharField(choices=TERM, max_length=7)
    student = models.ForeignKey(Student, on_delete=models.CASCADE)
    subject = models.ForeignKey(Subject, on_delete=models.CASCADE)
    fca = models.CharField(max_length=10)
    sca = models.CharField(max_length=10)
    exam = models.CharField(max_length=10)
    total = models.CharField(max_length=3, blank=True, null=True)
    grade = …
Run Code Online (Sandbox Code Playgroud)

django postgresql django-orm django-database django-annotate

-1
推荐指数
1
解决办法
77
查看次数