Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何迭代Django模型字段,并根据条件添加值_Python_Django_Django Models - Fatal编程技术网

Python 如何迭代Django模型字段,并根据条件添加值

Python 如何迭代Django模型字段,并根据条件添加值,python,django,django-models,Python,Django,Django Models,我有一个模型,它模拟了一条最多有30个车站的火车线路,因此该模型有30个可为空的字段 型号.py 类模板(models.Model): 拾取模式=models.IntegerField(默认值=1) start_station=models.CharField(最大长度=2000) end_station=models.CharField(最大长度=2000,null=True) station_1=models.CharField(最大长度=2000,null=True) station_2=

我有一个模型,它模拟了一条最多有30个车站的火车线路,因此该模型有30个可为空的字段

型号.py

类模板(models.Model):
拾取模式=models.IntegerField(默认值=1)
start_station=models.CharField(最大长度=2000)
end_station=models.CharField(最大长度=2000,null=True)
station_1=models.CharField(最大长度=2000,null=True)
station_2=models.CharField(最大长度=2000,null=True)
station_3=models.CharField(最大长度=2000,null=True)
station_4=models.CharField(最大长度=2000,null=True)
station_5=models.CharField(最大长度=2000,null=True)
station_6=models.CharField(最大长度=2000,null=True)
station_7=models.CharField(最大长度=2000,null=True)
station_8=models.CharField(最大长度=2000,null=True)
station_9=models.CharField(最大长度=2000,null=True)
station_10=models.CharField(最大长度=2000,null=True)
station_11=models.CharField(最大长度=2000,null=True)
station_12=models.CharField(最大长度=2000,null=True)
station_13=models.CharField(最大长度=2000,null=True)
station_14=models.CharField(最大长度=2000,空值=True)
station_15=models.CharField(最大长度=2000,null=True)
station_16=models.CharField(最大长度=2000,空值=True)
station_17=models.CharField(最大长度=2000,null=True)
station_18=models.CharField(最大长度=2000,null=True)
station_19=models.CharField(最大长度=2000,null=True)
station_21=models.CharField(最大长度=2000,null=True)
station_22=models.CharField(最大长度=2000,空值=True)
station_23=models.CharField(最大长度=2000,null=True)
station_24=models.CharField(最大长度=2000,空值=True)
station_25=models.CharField(最大长度=2000,空值=True)
station_26=models.CharField(最大长度=2000,空值=True)
station_27=models.CharField(最大长度=2000,空值=True)
station_28=models.CharField(最大长度=2000,空值=True)
station_29=models.CharField(最大长度=2000,null=True)
station_30=models.CharField(最大长度=2000,null=True)
正在使用ajax请求逐个添加数据

因此,我必须循环遍历从
station_1
开始的所有字段。。如果不是。。去买下一个吧

下面是我如何尝试的:

def添加在线站点(请求):
inLine\u station=request.GET.GET('inLine\u stations',None)
obj=TempLine.objects.filter()[0]
对于对象中的f.\u meta.get\u字段[3:]:
如果f为无:
f=线路内车站
f、 保存()
其他:
通过

返回一个错误
TypeError:“method”对象不可下标

您应该创建一个站点模型。虽然现在你只需要车站的名称,但它很快就会发展成需要一个位置、开放时间等

一旦你建立了这样一个模型(即使它当时只有一个字段和一个名称),就与你的行建立多对多关系,并以与任何其他相关模型字段相同的方式访问它们


作为一般编程规则,如果要命名变量,则需要重新考虑是否需要将这些对象存储在某种类型的集合中,您应该创建站点模型。虽然现在你只需要车站的名称,但它很快就会发展成需要一个位置、开放时间等

一旦你建立了这样一个模型(即使它当时只有一个字段和一个名称),就与你的行建立多对多关系,并以与任何其他相关模型字段相同的方式访问它们

作为一般编程规则,如果要命名变量
variable\u n
,则需要重新考虑是否需要将这些对象存储在某种类型的集合中。首先,错误:
。\u meta.get\u fields
是一个方法,而不是一个属性;因此,您需要:

for f in obj._meta.get_fields()[3:]:
# Note the call:             ^^
现在,您的设计似乎不正确。您所做的基本上是调用与
站点
模型的关系。因此,创建一个
站点
模型,例如使用包含站点名称的
名称
字段(以及其他需要的字段)。还要确保清楚地考虑与
模型的关系;乍一看,它对我来说就像是一个多对多。

首先错误:
\u meta.get\u fields
是一个方法,而不是一个属性;因此,您需要:

for f in obj._meta.get_fields()[3:]:
# Note the call:             ^^
现在,您的设计似乎不正确。您所做的基本上是调用与
站点
模型的关系。因此,创建一个
站点
模型,例如使用包含站点名称的
名称
字段(以及其他需要的字段)。还要确保清楚地考虑与
模型的关系;乍一看,我觉得这是一个多对多的过程