我有以下Django模型,它从数据库中检索3条记录。下面的类代表我正在构建的Django应用程序中的Model。我意识到create_hotspots
函数所采用的参数未被使用。为了解释我的问题,我刚刚简化了之前代码的样子。
from django.db import models
from django.db import connection, transaction
import math
import MySQLdb
class Victims(models.Model):
def __init__(self):
self.results=[]
def create_hotspots(self,radius,latitude,longitude):
self.radius=str(radius)
self.latitude=str(latitude)
self.longitude=str(longitude)
db=MySQLdb.connect (host = "localhost", user = "root",passwd = "pass",db = "test")
cursor = db.cursor ()
cursor.execute("""SELECT * FROM poi_table""")
self.results=cursor.fetchall()
cursor.close ()
db.close ()
def __unicode__(self):
return self.results
现在,假设我打开Django shell并执行以下指令:
>>from PyLayar.layer.models import Victims
C:\Python26\lib\site-packages\MySQLdb\__init__.py:34: DeprecationWarning: the sets module is deprecated
from sets import ImmutableSet
>>> v=Victims()
>>> v.create_hotspots(1000, 42.3931955679, -72.5289916992)
>>> Victims.objects.all()
[]
我的问题是为什么Victims.objects.all()
指令没有返回结果。 SQL查询返回3个结果,results
变量存储生成的元组。
答案 0 :(得分:3)
Victims.create_hotspots
方法没有return
语句。你期望它返回什么?
此外,Victims.create_hotspots
没有save()
来保存受害者实例。
如果您正在尝试创建“持久聚合”对象,则应考虑做一些不同的事情。
v= Victim.objects.create( radius, lat, lon, Poi.objects.all())
v.save()
这将解开你的两个模型,允许你使用简单的Django处理编写更简单,纠缠度更低的模型。