【问题标题】:How to build tuple array variable of integers + strings in python for loop?如何在python for循环中构建整数+字符串的元组数组变量?
【发布时间】:2020-05-05 00:12:39
【问题描述】:

手动构建的变量 STAFFLIST 在 django 数据库中作为 PositiveSmallIntegerField 列出的选项列表工作。

STAFF1 = 1
STAFF2 = 2
STAFF3 = 3
STAFFLIST = (
    (STAFF1, _('John Doe')),
    (STAFF2, _('Lisa Beauty')),
    (STAFF3, _('Harry Potter')),
)

此变量的打印工作如下:

>>>print(STAFFLIST[1])
(2, 'Lisa Beauty')
>>> print(STAFFLIST[1][0])
2
>>> print(STAFFLIST[1][1])
Lisa Beauty
>>>

如何根据实际的人员列表在for循环中自动构建这个变量?我正在尝试以下类似的方法,但没有成功:

from django.contrib.auth.models import User
from django.utils.translation import gettext as _

staff = User.objects.filter(is_staff=True)
idx=0
for stf in staff:
    STAFFLIST[idx] = (stf.id, _(stf.first_name + ' ' + stf.last_name))
    idx=idx+1

我收到如下错误:

TypeError: 'str' object does not support item assignment

我相信,我的问题是 python 数据类型的知识水平低。目前,我正在尝试使用元组数据类型并将字符串存储在其中。

【问题讨论】:

  • 你不能用ForeignKey作为模型或ModelChoiceField作为表格吗?
  • 存在 100 种不同的方法来解决简单的任务。 “选择”文件应用于在管理数据库中识别解决客户任务的员工。我在Built-in Django solutions 启发了自己。我想要动态的 STAFFLIST,因为它可以改变。它应该独立于使用PositiveSmallIntegerFieldModelChoiceField 的事实。当我可以手动构建变量时,它必须可以在 for 循环中自动完成。我发现它比 django 问题更基本的 python。

标签: python django string variables integer


【解决方案1】:

我已经解决了 for 循环问题。以下代码工作并构建与手动定义的变量相同的元组数组:

from django.contrib.auth.models import User
from django.utils.translation import gettext as _

staff = User.objects.filter(is_staff=True)
idx=0
for stf in staff:
    if idx == 0:
        STAFFLIST = ((stf.id, _(stf.first_name + ' ' + stf.last_name)),)
        idx=1
    else:
        STAFFLIST = STAFFLIST + ((stf.id, _(stf.first_name + ' ' + stf.last_name)),)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-07-10
    • 1970-01-01
    • 1970-01-01
    • 2014-01-17
    相关资源
    最近更新 更多