带动态参数的Django模型:如何查询?

时间:2011-08-23 14:07:51

标签: django django-models

我需要构建一个具有动态参数的通用django对象。这是从一个对象到另一个对象可能不同的参数。我无法创建不同的模型,因为参数可以随时更改,我不想使用PickledField,因为SQL数据库应该在python外部访问。

我制作了这些模型:

class DynamicObject(models.Model):
    uuid = UUIDField(primary_key=True, editable=False)
    synopsis = models.CharField(max_length=64)
    created = models.DateTimeField(auto_now_add=True)
    modified = models.DateTimeField(auto_now=True)

class DynamicObjectParam(models.Model):
    obj = models.ForeignKey(DynamicObject,related_name='params')
    name = models.CharField(max_length=30)
    value = models.CharField(max_length=255)


To list parameters for a particular object, I do :
obj = DynamicObject.objects.get(uuid='xxx')
for p in obj.params:
    print p.name,p.value

很容易 但是,如何选择具有特定参数的对象,例如: 什么是DynamicObjects,其参数名为“server_name”,值为“Sun SF25K”?

2 个答案:

答案 0 :(得分:0)

尝试一下:

results = DynamicObject.objects.filter(params__name__exact='server_name',params__value__exact='Sun SF25K')

答案 1 :(得分:0)

DynamicObject.objects.filter(params__name='server_name', params__value='Sun SF25K')