Thanks Kip. I appreciate the suggestions.
Kind regards,
Cormac.
On Oct 23, 4:29 pm, Kip Parker <[EMAIL PROTECTED]> wrote:
> Neither seem right to me. I'm not quite sure what the application
> does, but it seems likely that a person only belongs to one family, in
> which case you'll need a foreign key like this.
>
> class Adult(models.Model):
> name = models.CharField(maxlength=30)
> partner = models.CharField(maxlength=30)
> kriskindle = models.CharField(maxlength=30)
> email = models.EmailField()
> family = models.ForeignKey(Family)
>
> also the Kinder and the adult classes are similar, so you might like
> to look at using inheritance, perhaps from a person class that looks
> like
>
> class Person(models.Model):
> name = models.CharField(maxlength=30)
> kriskindle = models.CharField(maxlength=30)
> family = models.ForeignKey(Family)
>
> On Oct 23, 11:39 am, dustpuppy <[EMAIL PROTECTED]> wrote:
>
> > Hi,
>
> > I'm starting off with Django and trying my first (toy) project. It's a
> > Kris Kindle application (called "Secret Santa"? by some). Not exactly
> > earth-shattering, but I want to start with something small.
>
> > I'm unsure what approach to use when designing my model.
>
> > The entities I am dealing with are Family, Adult and Kinder.
>
> > Normally for a standalone application (using Java or Python), I would
> > design a class Family, with fields/attributes representing arrays/
> > lists of objects of the classes Adult and Kinder.
> > (Apologies if my OOP terminology is mixed-up - I'm originally a C/Perl
> > programmer!)
>
> > I've started my Django design that way:
>
> > class Adult(models.Model):
> > name = models.CharField(maxlength=30)
> > partner = models.CharField(maxlength=30)
> > kriskindle = models.CharField(maxlength=30)
> > email = models.EmailField()
>
> > def __str__(self):
> > return self.name
>
> > class Admin:
> > #list_display('name', 'partner', 'email')
> > pass
>
> > class Kinder(models.Model):
> > name = models.CharField(maxlength=30)
> > excluded = models.ManyToManyField(Adult)
> > kriskindle = models.CharField(maxlength=30)
>
> > def __str__(self):
> > return self.name
>
> > class Admin:
> > #list_display('name', 'excluded')
> > pass
>
> > class Family(models.Model):
> > name = models.CharField(maxlength=30)
> > children = models.ManyToManyField(Kinder)
> > adults = models.ManyToManyField(Adult)
>
> > def __str__(self):
> > return self.name
>
> > class Admin:
> > pass
>
> > On the other hand, for any previous Web development I've done (with
> > PHP or Perl), I would have define just 2 entities, Adult and Kinder,
> > and simply included family as a string attribute of each.
>
> > class Adult(models.Model):
> > name = models.CharField(maxlength=30)
> > partner = models.CharField(maxlength=30)
> > kriskindle = models.CharField(maxlength=30)
> > email = models.EmailField()
> > family = models.CharField(maxlength=30)
>
> > def __str__(self):
> > return self.name
>
> > class Admin:
> > #list_display('name', 'partner', 'email')
> > pass
>
> > class Kinder(models.Model):
> > name = models.CharField(maxlength=30)
> > excluded = models.ManyToManyField(Adult)
> > kriskindle = models.CharField(maxlength=30)
> > family = models.CharField(maxlength=30)
>
> > def __str__(self):
> > return self.name
>
> > class Admin:
> > #list_display('name', 'excluded')
> > pass
>
> > I actually think the former would be easier to program, e.g. in terms
> > of getting access to the lists of adults directly from the database,
> > instead of having to retrieve it from a Family object first.
>
> > Which of these would be the more appropriate way to do it in Django?
>
> > Thanks in advance for taking the time to respond.
>
> > Kind regards,
> > Cormac.
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups
"Django users" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to [EMAIL PROTECTED]
For more options, visit this group at
http://groups.google.com/group/django-users?hl=en
-~----------~----~----~----~------~----~------~--~---