小编paz*_*tek的帖子

如何根据名称而不是索引对选项进行排序?

这是我在 stackoverflow 上发表的第一篇文章,我将尝试遵循基本规则,但对我要温和。

我必须对 django 应用程序进行一些更改(乍一看似乎很肤浅)。客户希望网站管理部分中的所有表单下拉菜单按字母顺序排序。问题是其中一些选择是基于 models.py 文件中定义的静态列表,如下所示:

STATE=(  
    (1, 'Full'),  
    (2, 'Damaged'),  
    (3, 'Partially damaged')  
)  
Run Code Online (Sandbox Code Playgroud)

我尝试像这样重新排序列表:

STATE=(  
    (2, 'Damaged'),  
    (1, 'Full'),  
    (3, 'Partially damaged')  
)  
Run Code Online (Sandbox Code Playgroud)

但这似乎没有什么区别(尽管我不太熟悉Python缓存类和视图的方式)。

像这样重新排序索引:

STATE=(  
    (1, 'Damaged'),  
    (2, 'Full'),  
    (3, 'Partially damaged')  
)  
Run Code Online (Sandbox Code Playgroud)

可行,但意味着需要编写一些巨大且复杂的 SQL 脚本来保持旧数据的一致性(因为大多数列表都比这个列表长,并且排列会变得更加复杂)。

所以我的问题是:有没有办法根据这些选项的名称而不是索引对这些选项进行排序?也许在 的定义中models.IntegerField(..., choices=STATE)

谢谢你们。

python django django-admin

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

有没有办法使用 FormArray 作为顶级表单

我正在使用 @ngular/core 6.1.1 和 @angular/forms 6.1.1

我正在尝试编写一个 ControlValueAccessor 来管理一组值。

我正在使用反应式表单并像这样声明我的表单:

export class ItemsFormComponent implements ControlValueAccor, OnInit {

    public form: FormArray;

    public items: string[] = ['foo', 'bar', 'baz'];

    constructor(private formBuilder: FormBuilder) {
        this.form = this.formBuilder.array(this.items.map((item) => new FormControl(item)));

        this.form.valueChanges
            .debounceTime(200)
            .subscribe((items: string[]) => {
                this.onChangeFn(items);
            });
    }
}
Run Code Online (Sandbox Code Playgroud)

但是,我收到了一个模板解析错误

<ol [formArray]="form">
    ...
</ol>
Run Code Online (Sandbox Code Playgroud)

Can't bind to 'formArray' since it isn't a known property of 'ol'

我确实在我的功能模块中包含了 FormsModule 和 ReactiveFormsModule。基于 FormGroup 工作的任何其他表单。

如果我这样做,它有点工作,<ol [formGroup]="form">但它似乎是一个奇怪的黑客,并且验证似乎已损坏。而且我担心无论如何它都会在为产品构建时破裂。

那么有没有办法使用 FormArray 作为顶级表单呢?理想情况下,我想避免创建一个包含单个 FormArray 的 FormGroup。

angular angular-forms

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

标签 统计

angular ×1

angular-forms ×1

django ×1

django-admin ×1

python ×1