I need to build a generic django object having dynamic parameters. that is parameters that can be different from one object to another. I cannot create different models because parameters can change at any time and I do not want to use a PickledField because SQL database should be accessed outside python.
I made these models :
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
It is quite easy,
but how can I do to select objects having a specific parameter, for exemple :
what are DynamicObjects having a parameter named ‘server_name’ and a value ‘Sun SF25K’ ?
Give this a try: