Re: Many-to-many through multiple tables
Hi,
I've slimmed it down to the relevant fields. I'm a bit of a noob, but
I think I'm basically trying to build a generic framework that can be
made specific in a profile.
Profile = BusinessVersion + Group + LifecycleStage + Package.Versions
Jonathan
class Product(models.Model):
name = models.CharField(max_length=20)
class BusinessVersion(models.Model):
version = models.CharField(max_length=10)
description = models.CharField(max_length=100)
product = models.ForeignKey(Product)
class LifecycleStage(models.Model):
name = models.CharField(max_length=40)
sequence = models.DecimalField(max_digits=2, decimal_places=0)
class Package(models.Model):
name = models.CharField(max_length=100)
class PackageVersion(models.Model):
version = models.CharField(max_length=10)
package = models.ForeignKey(Package)
lifecyclestage = models.ForeignKey(LifecycleStage)
class Group(models.Model):
name = models.CharField(max_length=100)
product = models.ForeignKey(Product)
packages = models.ManyToManyField(Package)
class Profile(models.Model):
name = models.CharField(max_length=100)
businessversion = models.ForeignKey(BusinessVersion)
lifecyclestage = models.ForeignKey(LifecycleStage)
group = models.ForeignKey(Group)
packageversions = models.ManyToManyField(PackageVersion)
class Stream(models.Model):
name = models.CharField(max_length=4)
businessversion = models.ForeignKey(BusinessVersion)
On Nov 29, 1:19 am, t0ster <tost...@gmail.com> wrote:
> Could you post your models.py code here?
>
> On Nov 28, 1:10 pm, Jonathan <jonathan.kin...@gmail.com> wrote:
>
> > This may be more of a general database design question, but I want to
> > come up with something that works with Django's ORM.
>
> > I have four bits of information that I want to link together. Generic
> > packages, package versions, groups of packages and a profile that
> > brings them together.
>
> > The final goal is a Profile that binds the Packages from a Group to
> > specific Versions.
>
> > I have a solution at the moment but it seems a bit clumsy for what
> > seems like something that would be commonly encountered.
>
> > 4 models: Package, Version, Group and Profile. I've omitted the id
> > primary key column on the examples.
>
> > Package:
> > | name |
> > --
> > | django |
> > | python |
>
> > Version:
> > | package_id | version |
> > --
> > | 1 | 1.0 |
> > | 1 | 1.1 |
> > | 2 | 2.4 |
> > | 2 | 2.6 |
>
> > Group:
> > | name |
> > --
> > | django_stack |
>
> > group_packages:
> > | group_id | package_id |
> > --
> > | 1 | 1 |
> > | 1 | 2 |
>
> > Profile:
> > | name | group_id |
> > --
> > | django_prod | 1 |
> > | django_dev | 1 |
>
> > profile_packageversion:
> > | profile_id | version_id |
> > --
> > | 1 | 1 |
> > | 1 | 2 |
> > | 2 | 3 |
> > | 2 | 4 |
>
> > I can get what I need from a two step process, but is this the best or
> > most direct way to achieve this?
>
> > for package in profile.group.packages.all():
> > print package.name
> > for version in package.versions.all():
> > print version
>
> > Is there a nicer way to do this? Is there a different model structure
> > that I could use?
>
> > Jonathan
--
You received this message because you are subscribed to the Google Groups "Django users" group.
To post to this group, send email to django-users@googlegroups.com.
To unsubscribe from this group, send email to django-users+unsubscribe@googlegroups.com.
For more options, visit this group at http://groups.google.com/group/django-users?hl=en.
0 Comments:
Post a Comment
Subscribe to Post Comments [Atom]
<< Home