我正在使用Django的外部数据库。我已经编写了一个脚本来填充数据库。我能够使用syncdb访问这些数据,并且我已经为这些数据创建了一个模型。
我可以打印整个数据库,但使用:
namespace persisitence
open System.Collections.Generic
open System
open System.IO
type LocalData<'T> =
struct
val mutable elements_ : 'T list
val mutable lock_ : obj
new(e: 'T list) = { elements_ = e ; lock_ = new obj() }
end
type BinaryPersistenceOut<'T, ^W when ^W: (member write : ('T * BinaryWriter) -> unit)>(fn: string, serializer: ^W) as this =
let writer_ = new BinaryWriter(File.Open(fn, FileMode.Append))
let mutable localdata_ = new LocalData<'T>([])
let serializer_ = serializer
let NUM_SECS_IN_MIN = 60
let NUM_MSECS_IN_SEC = 1000
let NUM_MIN_BETWEEN_COMMITS = 2
let TIME_TO_WAIT = 15
let closed_ = false
let freq_ = NUM_MIN_BETWEEN_COMMITS * NUM_SECS_IN_MIN * NUM_MSECS_IN_SEC
let path_ = fn
let timer_ = new System.Timers.Timer((float) (NUM_MIN_BETWEEN_COMMITS * NUM_MSECS_IN_SEC) )
let writetofile =
fun (arg: Timers.ElapsedEventArgs ) ->
lock localdata_.lock_ ( fun () ->
if closed_ = false then
for elem in localdata_.elements_ do
serializer.write(elem, writer_)
)
do
timer_.Elapsed.Add(writetofile)
引发以下异常:
> ValueError at /数据必须是类似QuerySet(有count和order_by)或支持列表(数据) - TicketOdds都没有
我的模特是:
TicketOdds.objects.all()[0]
我将什么添加到模型中以使其“类似于查询”?我尝试添加
class TicketOdds(models.Model):
#id = models.AutoField(primary_key=True)
price = models.IntegerField(blank=True, null=True)
ticket_name = models.TextField(blank=True, null=True)
ticket_id = models.IntegerField(primary_key=True, blank=True, null=False)
odds = models.FloatField(blank=True, null=True)
img_url = models.TextField(blank=True, null=True)
ticket_url = models.TextField(blank=True, null=True)
class Meta:
managed = False
db_table = 'ticket_odds'
def __iter__(self):
for i in xrange(100):
yield i
def __getitem__(self):
return unicode(self)
出于特定目的...... 我一定错过了什么。
答案 0 :(得分:2)
由于您没有发布完整的回溯错误消息。我将引导您回答您的问题。
data
中的TableData(data, table)
不可迭代时,它会引发此类错误。即__iter__
未定义。 __iter__
或Model
中定义Model.Meta
方法,因为当您拨打此电话时,可以检索到QuerySet
这是一个可迭代的类:TicketOdds.objects.all()
data
与之前检索到的查询集一起发送到TableData(data, table)
示例:
TableData(TicketOdds.objects.all(), table)
我将什么添加到模型中以使其成为&#34;类似查询集的&#34;?
你不能制作你的模型&#34;类似查询集&#34;,而是使用上面的例子从模型中获得QuerySet
。