I have a simple category model. They will eventually be chapters in a book
and I only want entries to go into child categories, not the roots. Here's
the models:

class Category(models.Model):
    name = models.CharField(max_length=120, blank=True)
    parent = models.ForeignKey('self', null=True, blank=True,
related_name='child_set')

class Content(models.Model):
    category = models.ForeignKey(Category)

So say the categories were like this:

Languages
   -python
   -ruby
   -C++
Frameworks
  -django
  -rails
  -j2ee

I don't want any content to go into the languages or frameworks categories,
only the child ones. Where would the logic to restrict the choice of
category in Content within the admin interface?

My best idea so far is to create a sub-class of ForeignKey called
ContentCategoryField and override the validate method. In the validate
method I could look up the id that was entered and see that has a parent id
or not.

I was also thinking of restricting my categories to be just 2 levels, like
above. I could create a a ParentForCategoryField that overrides ForeignKey
and it could check to make sure that any new category being created does not
have a parent that also has a parent.

Not sure if I'm on the right track here for a DRY method that will work with
the admin interface and also with newforms (should I decide to make some of
my own admin-like views).

-- 
David Grant
http://www.davidgrant.ca

--~--~---------~--~----~------------~-------~--~----~
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 [EMAIL PROTECTED]
For more options, visit this group at 
http://groups.google.com/group/django-users?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to