假设您正在使用新 Django 应用程序的第一个版本,并且不断添加更改模型。
作为数据驱动的应用程序,您主要致力于自定义 django 管理。
在这种情况下syncdb不太有用,因为它将无法更新模型。South很有趣,但是当您在第一个版本中工作时,它没有太大意义。
删除数据库并重新初始化它需要几个命令,并且您还需要手动输入新的管理员帐户。
您建议如何设置您的开发环境,以便您可以:
因此,我希望能够向模型添加新属性、切换到浏览器并刷新管理页面并查看新属性。
我使用的是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 …
我正试图django-modeltranslation在我的项目中使用.
目前,仅适用于Tag具有一个字段的模型 - name.
我已创建并注册TranslationOptions,然后makemigrations和migrate.
现在我无法访问原始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
我有一个查询,如下所示,该查询返回特定课程(学年)中特定学期(学期)中特定班级的所有学生的成绩:
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