我正在研究Gran Turismo 5 Django应用程序。这是一个非常简化的数据模型:
class Event(models.Model):
name = models.CharField(max_length=256, unique=True)
class EventCriteria(models.Model):
name = models.CharField(max_length=256, unique=True)
events = models.ManyToManyField(Event)
test = ???
class Country(models.Model):
name = models.CharField(max_length=256, unique=True)
class Make(models.Model):
name = models.CharField(max_length=256, unique=True)
country = models.ForeignKey(Country)
class Car(models.Model):
name = models.CharField(max_length=256, unique=True)
make = models.ForeignKey(Make)
class Setup(models.Model):
name = models.CharField(max_length=256, unique=True)
car = models.ForeignKey(Car)
horsepower = models.IntegerField()
例如,给定事件可能具有“Country = Italy”标准。当应用于上述模型时,需要进行如下测试:
setup.car.make.country.name == u'Italy'
有没有人有一个很好的框架,我可以如何构建EventCriteria模型(尤其是'test'字段或字段')来a)存储这些测试,以及b)在未来的视图中将它们作为过滤器应用?
谢谢,
麦克
答案 0 :(得分:2)
目前尚不清楚为什么你的“测试”不是一个简单的布尔字段。问题很混乱。 我假设确实需要一个持久性过滤器,因为这经常被请求。
Django过滤器是一个字典。
SomeModel.objects.filter( column=value, column__contains=value )
SomeModel.objects.filter( **{'column':value, 'column__contains':value} )
你可以这样做来坚持你的“测试”。
将“过滤器”表达式转换为字典。
JSON将字典编码为BLOB
保存。
您可以按如下方式应用测试。
获取过滤器BLOB
JSON解码字典
在过滤器中使用适当类的字典。