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
-~----------~----~----~----~------~----~------~--~---