Why not just override the save method for the model and delete any instances
of it before calling super.save(). I'm not a 100% sure on this, but I do
think the admin interface calls the model save method whenever you edit
something from there.

So, something like this:

class About(models.Model):
  text = models.TextField()
  pub_date = models.DateTimeField(auto_now=True)

  def save(self):
     About.objects.all().delete()
     super(About, self).save()

Also see
http://www.djangoproject.com/documentation/model-api/#overriding-default-model-methods
Best,

Rishabh

On Tue, Jun 17, 2008 at 2:05 AM, Dan Lazewatsky <[EMAIL PROTECTED]> wrote:

>
> The way you described has the added advantage of effectively keeping a
> version history. However, if no one is ever going to use this history
> it's just a waste of space. There are two other options I can think of,
> one probably better than the other:
> 1. Django's cache framework
> (http://www.djangoproject.com/documentation/cache/) should help avoid
> some of the overhead of the DB calls.
> 2. Triggers - MySQL and Oracle (and probably others) support triggers
> which fire a certain event occurs. You could setup a trigger that fires
> when a new row is inserted into your about table that deletes all rows
> but the new one. In my experience, triggers are a pain to deal with, but
> it's an option.
>
> ocgstyles wrote:
> > The client wants certain parts of the site to be editable, I don't
> > particularly agree with the logic, simply because why take a DB hit
> > (although small) just to grab text from a database for an "About" page
> > when that text us USUALLY static.
> >
> > So thinking of this "About" page, maybe the client just tells a little
> > about the business etc, but maybe wants to update it occasionally.  I
> > implemented it as a "About" class in a "Section" module.  But with
> > that model, you can add multiple "About" texts.  One way I thought of
> > doing it was to grab the latest edited object like this:
> >
> > class About(models.Model):
> >    text = models.TextField()
> >    pub_date = models.DateTimeField(auto_now=True)
> >
> > Then just use:
> >
> > About.objects.order_by('-pub_date')
> >
> > to retrieve the latest edited version.  So having many versions isn't
> > a problem...
> >
> > Just wondered if there was a better way to handle this.
> >
> >
> > On Jun 14, 2:41 pm, bruno desthuilliers
> > <[EMAIL PROTECTED]> wrote:
> >
> >> On 14 juin, 15:53, ocgstyles <[EMAIL PROTECTED]> wrote:
> >>
> >>
> >>> Is there a way create a restriction that will only allow one instance
> >>> of a model?
> >>>
> >> The closest you could get would be to define a model with a unique not
> >> editable field and override the save method to make this field a
> >> constant value. But that wont work for direct database access.
> >>
> >> Anyway, why would you want such a thing ?
> >>
> > >
>
> >
>

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