我刚刚开始学习Django框架,我在理解如何将Django Model字段作为字符串时遇到了一些麻烦。模型(MapArea)successfully retrieves data from the database,但我需要将部分数据转换为字符串,以便将其JSON格式解析为列表。我需要转换为字符串的字段设置为streets = models.CharField(max_length=2000)
这是我的Model类:
class MapArea(models.Model):
country = models.CharField(max_length=500)
state = models.CharField(max_length=500)
city = models.CharField(max_length=500)
name = models.CharField(max_length=500)
lat = models.DecimalField(max_digits=15,decimal_places=6)
lon = models.DecimalField(max_digits=15,decimal_places=6)
streets = models.CharField(max_length=2000)`
def __str__(self):
return self.name
# Meta
class Meta:
abstract = True
# Do stuff with a string of street data from the database
def get_runways(streets):
return streetList
现在,我尝试使用custom template filter来调用我的模型(MapArea)中的方法,因为我似乎无法弄清楚如何将数据转换为字符串转让:
@register.filter(name = 'get_streets')
def get_streets(obj, streets):
return obj.get_streets(streets)
然后我将我的模板用作{{ maparea|get_streets:maparea.streets }}
,这给了我错误get_streets() takes 1 positional argument but 2 were given
。
理想情况下,我希望能够在分配街道之前转换数据。例如:
streets = get_streets(models.CharField(max_length=2000)) # Somehow converted to a string to use with the method
我不确定整个查询模型系统是否可能来自我正在尝试的内容。
所以我的问题是:如何将CharField数据作为字符串使用我的列表转换方法(get_streets()
)以便在我的模板中使用?
提前谢谢你。如果这令人困惑,我道歉。这里有两个问题。如果您需要任何其他信息,请与我们联系。
答案 0 :(得分:4)
在Django中,模型实例上的db访问看起来像普通的属性访问。 ORM在后台处理db查询。
def get_runways(self):
# you can directly access "self.streets" attribute on the model instance
return something
如果您是Django的新手,但已经熟悉Python,那么您可能希望在此处访问self.streets
将返回models.CharField
实例。但实际上它返回一个字符串,因为基类models.Model
对子类上定义的字段进行了一些处理。