小编Pho*_*ler的帖子

Django admin在字段名称更改后给出错误"'Model'对象没有属性'field_name'"

为了改进我的代码和数据库,我需要更改模型中的字段名称,使其远离容易混淆且接近保留字的值.

原始模型实际上是这样的:

class Company(models.Model):
    my_old_name = models.CharField(max_length=100, db_index=True)
Run Code Online (Sandbox Code Playgroud)

新模型实际上是这样的:

class Company(models.Model):
    my_new_name = models.CharField(max_length=100, db_index=True)
Run Code Online (Sandbox Code Playgroud)

我跑了:

python manage.py makemigrations my_app

迁移代码是这样的:

class Migration(migrations.Migration):

    dependencies = [
        ('my_app', '0004_auto_20160605_1852'),
    ]

    operations = [
        migrations.RenameField(
            model_name='company',
            old_name='my_old_name',
            new_name='my_new_name',
        ),
    ]
Run Code Online (Sandbox Code Playgroud)

然后我执行了:

python manage.py migrate
Run Code Online (Sandbox Code Playgroud)

该网站运行正常.所有页面都会显示并根据需要使用"new_name".但是,我无法使用管理站点来管理数据库.它抛出错误:

Error during template rendering

In template /Library/Frameworks/Python.framework/Versions/3.5/lib/python3.5/s...  error at line 91

'Company' object has no attribute 'my_old_name'
Run Code Online (Sandbox Code Playgroud)

我已经有一段时间没有运气了.任何帮助,将不胜感激.

作为第一个建议的补充,这是admin.py的内容:

from django.contrib import admin
from .models import Company, Parameters

admin.site.register(Company)
admin.site.register(Parameters)
Run Code Online (Sandbox Code Playgroud)

它不包含'my_old_name'...

django django-admin

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

如何在 Django 表单中为 IntegerField 设置 NumberInput 小部件的宽度和输入限制

我正在寻找一种方法来更改 Django 表单中输入框的宽度。

参数的模型代码如下所示:

my_integer = models.IntegerField('Window', default=50)
Run Code Online (Sandbox Code Playgroud)

并且,将其放入表单中,生成的 HTML 代码如下:

<input id="id_my_integer" name="my_integer" value="50" type="number">
Run Code Online (Sandbox Code Playgroud)

而且,这个框相当宽——大约有 20 个字符。

如果我在表单类 Meta 的定义中添加代码:

widgets = {
  'my_integer': forms.TextInput(attrs={'size':'3', 'maxlength':'3'}),
}
Run Code Online (Sandbox Code Playgroud)

我得到一个 5-6 个字符宽的框,可让我插入 3 个字符,HTML 代码将类型更改为 type='text' 并且递增/递减箭头消失。

所以,我真正想要的是一个 3 个字符宽的框,具有 3 个字符的输入限制,并具有NumberInput小部件的递增/递减箭头。我该怎么做呢?

python django django-forms django-widget python-3.x

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