Thanks for all of your help, that solved my issue. I gathered the
values then overrode the __init__ function for the form class adding
another paramater containing the values that I passed in. Worked like
a charm.
On Apr 4, 3:50 pm, "Karen Tracey" <[EMAIL PROTECTED]> wrote:
> On Fri, Apr 4, 2008 at 2:25 PM, AJ <[EMAIL PROTECTED]> wrote:
>
> > The actual custom_query is called in forms.py, something similar to
> > the following:
>
> > //views.py
> > from app.forms import CrayonForm
>
> > def add_crayon(request):
> > if request.method == 'POST':
> > form = CrayonForm(request.POST)
> > if form.is_valid():
> > ...
> > else:
> > form = CrayonForm()
>
> > return render_to_response('page.html', {'form' : form})
>
> > //forms.py
> > from django import newforms as forms
> > from django.newforms import widgets
> > from app.models import Color
>
> > class CrayonForm(forms.Form):
> > colors = [('', 'Select a color...')]
> > colors += [(c.id, c.name) for c in Color.objects.custom_query()]
>
> > color = forms.Field(widget=widgets.Select(choices=colors),
> > initial="")
>
> That's the culprit. Those three lines to set up colors are only run when
> the class is defined, not each time an instance of the class is
> instantiated. You need to move the call to custom_query() into some code
> that is run each time one of these form instances is created, such as the
> __init__() function.
>
> Karen
>
>
>
> > Is any sort of caching enabled by default? I haven't added/changed
> > any settings involving caching in the settings.py
> > On Apr 4, 2:11 pm, "Karen Tracey" <[EMAIL PROTECTED]> wrote:
> > > On Fri, Apr 4, 2008 at 1:19 PM, AJ <[EMAIL PROTECTED]> wrote:
>
> > > > What would be the proper way to make sure the code is run each time
> > > > the manager is called? Here's a example of how I have my code
> > > > currently setup:
>
> > > > //models.py
> > > > from django.db import connection, models
>
> > > > class ColorManager(models.Manager):
> > > > def custom_query(self):
> > > > cursor = connection.cursor()
> > > > query = """SOME QUERY HERE""
> > > > cursor.execute(query)
> > > > return [row[0] for row in cursor.fetchall()]
>
> > > > class Color(models.Model):
> > > > color=models.CharField()
> > > > objects=ColorManager()
>
> > > > //vews.py
> > > > from app.models import Color
>
> > > > def some_view(request):
> > > > colors = Color.objects.custom_query()
> > > > return render_to_response('page.html', {'colors' : colors})
>
> > > > Is this not the proper way to setup the code so that the manager's
> > > > custom_query get's run every time it is called?
>
> > > No, it's correct, the way it is written here the query will get executed
> > > each time the view calls custom_query(). So, is the view being called?
> > > Perhaps caching is interfering with the view returning current
> > information?
>
> > > Karen
--~--~---------~--~----~------------~-------~--~----~
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
-~----------~----~----~----~------~----~------~--~---