python - Data models dependencies, can I simplify these objects? -


essentially have 6 object models, 3 regular objects , 3 dependencies of objects. individually, these objects can dependent on 1 or multiple instances of each of 3 regular objects.

my question: best practice? want able add new dependency regular object when needed. example:

a = a.objects.get(id=1) adependency = adependencies.objects.get(dependentto=a) 

then, i'd have object of dependencies a.


alternatively, did think of way merge 3 dependency objects one; however, i'm unsure whether it's practice.

class dependencies(models.model):     id = models.charfield(max_length=16)     dependentto = charfield(max_length=16)     = models.manytomanyfield(a)     b = models.manytomanyfield(b)     c = models.manytomanyfield(c) 

in scenario, don't use foreignkey map dependentto object. instead, use object id pull object - allowing me class agnostic; however, require unique ids throughout 3 regular objects.

a = a.objects.get(id=1) adependency = adependencies.objects.get(dependentto=a.id) 

one more idea! possibly still use foreignkey's, pass in string class name instead?

class dependencies(models.model):     id = models.charfield(max_length=16)     type = models.charfield(max_length=16)     dependentto = foreignkey(type)     = models.manytomanyfield(a)     b = models.manytomanyfield(b)     c = models.manytomanyfield(c) 

object models:

class a(models.model):     id = models.charfield(max_length=16)     title = models.charfield(max_length=32)     summary = models.charfield(max_length=256)  class b(models.model):     id = models.charfield(max_length=16)     title = models.charfield(max_length=32)     summary = models.charfield(max_length=256)     = models.foreignkey(a)  class c(models.model):     id = models.charfield(max_length=16)     title = models.charfield(max_length=32)     summary = models.charfield(max_length=256)     b = models.foreignkey(b)  class adependencies(models.model):     id = models.charfield(max_length=16)     dependentto = models.foreignkey(a)     = models.manytomanyfield(a)     b = models.manytomanyfield(b)     c = models.manytomanyfield(c)  class bdependencies(models.model):     id = models.charfield(max_length=16)     dependentto = models.foreignkey(b)     = models.manytomanyfield(a)     b = models.manytomanyfield(b)     c = models.manytomanyfield(c)  class cdependencies(models.model):     id = models.charfield(max_length=16)     dependentto = models.foreignkey(b)     = models.manytomanyfield(a)     b = models.manytomanyfield(b)     c = models.manytomanyfield(c) 

thanks!

this can done lot simpler. define dependency model instead of dependencies model. need contenttypes django contribution:

from django.db import models django.contrib.contenttypes.fields import genericforeignkey django.contrib.contenttypes.models import contenttype  class dependency(models.model):     dependent_contenttype = models.foreignkey(contenttype)     dependent_id = models.positiveintegerfield()     dependent = genericforeignkey('dependent_contenttype', 'dependent_id')      prerequisite_contenttype = models.foreignkey(contenttype)     prerequisite_id = models.positiveintegerfield()     prerequisite = genericforeignkey('prerequisite_contenttype',                                       'prerequisite_id') 

then can make dependencies reverse generic relation on models a, b , c if like:

class a:     # ...     dependencies = genericrelation(         dependency,         content_type_field='dependent_contenttype',         object_id_field='dependent_id') 

Comments

Popular posts from this blog

shopping cart - Page redirect not working PHP -

php - How to modify a menu to show sub-menus -

python - Installing PyDev in eclipse is failed -