python将一行作为字段_关于python:Django admin在同一行显示多个字段

我已经创建了一个模型,它将自动显示模型中的所有字段,并将其显示在管理页面上。

现在,我有一个问题,我希望在同一行中有两个字段,为此,我必须在modeladmin中指定字段集:

1

2

3

4

5fieldsets = (

(None, {

'fields': (('firstname', 'lastname'),)

}),

)

是否必须指定所有字段?因为数据库中有许多字段需要指定。

只是我头脑中的一个想法。这个问题告诉我们如何获取模型字段的列表。获取所有字段的列表,并使用set difference删除firstname, lastname。

将这些字段包装在它们自己的元组上。

1

2

3

4

5class testAdmin(admin.ModelAdmin): fields = (

'field1',

('field2', 'field3'),

'field4'

)

在上面的示例中,字段field2和field3显示在一行上。

有一篇文章可能有用

文章引用如下:

Django is great. The bundled admin interface makes it better. But as the number of items on the form gets bigger, the amount of wasted space increases because the layout is single column. Coupled with left alignment on wide-screen monitors, my users usually end their day with a condition we call"eyeballs misalignment".

So I improvised and changed the form (and StackedInline) to a 2-up layout. No more"eyeballs misalignment".

The corresponding template for Django 1.2.1 (/contrib/admin/templates/admin/includes/fieldset.html) looks like this, modified lines highlighted:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

{% if fieldset.name %}{{ fieldset.name }}{% endif %}

{% if fieldset.description %}

{{ fieldset.description|safe }}

{% endif %}

{% for line in fieldset %}

{% cycle '

{{ line.errors }}

{% for field in line %}

{% if field.is_checkbox %}

{{ field.field }}{{ field.label_tag }}

{% else %}

{{ field.label_tag }}

{% if field.is_readonly %}

{{ field.contents }}

{% else %}

{{ field.field }}

{% endif %}

{% endif %}

{% if field.field.field.help_text %}

{{ field.field.field.help_text|safe }}

{% endif %}

{% endfor %}

{% cycle '' '

' %}

{% endfor %}

恐怕没有一个简单的方法。

一个选项是重写modeladmin的change_form.html模板,并根据需要设置表单样式。

另一种选择是执行自定义ModelForm并使用呈现两个输入字段的小部件定义字段,在表单的.save()方法中,将小部件结果值(元组)设置为两个字段。

谢谢,我正在找更容易的东西。

这对我有效

1

2

3fieldsets=(

("My Group",{"fields": (tuple(['field1','field1']),),}),

)

同意,这很烦人,但它的元组来自字段列表。您可以使用列表理解并将列表更改为元组。下面是一个跳过某些字段的示例,您希望在包括REST Normal方法的同时给予一些特别的注意。

1

2

3

4skipped=[]

alist = [field.name for field in ._meta.fields if field.name not in skipped]

fieldsets = tuple(alist)

*** play with skipped ***

稍微调整一下就可以了。

这很愚蠢,但是是的,如果要使用fieldsetstuple-within-a-tuple方法,那么必须指定表单上应该显示的所有字段。

这实际上是对"必须指定所有字段吗?"

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值