On 5 jan, 00:05, HARRY POTTRER <cp368...@ohio.edu> wrote:
> I have an class that I created which takes a queryset, and a field on
> the model that the queryset represents. Like this:
>
> mc = MyClass(queryset=MyModel.objects.all(), lat_lng_field='lat_lng')
>
> The class basically filters the queryset based on some geographical
> values, but in order to do that, it needs to know which field the
> coordinates are stored in.
>
> Right now I have no choice but require you to pass in a string
> representing the field name. But I think a better way would be to do
> it kind of like this:
>
> class MyModel(models.Model):
>     lat_lng = PointField()
>     name = CharFIeld(max_length=20)
>
>     class Meta:
>         verbose_name_plural = 'My Models'
>         lat_lng_field = 'lat_lng'
>
> Then just modify MyClass to get the field name from the Model's Meta
> class. Is this possible somehow?

Did you at least try ? It took me about 5 seconds to find out it
wouldn't work... or at least not without a very ugly monkeypatch.


> If not, whats the best way to go
> about this without having to pass in the field name directly?

You can

1/ store the info as a class attribute

class MyModel(models.Model):
    lat_lng_field = 'lat_lng'

    # etc

2/ store all "geographic" related infos in another inner class in your
models (not worth if you only have a single info...)

3/ add the attribute _after_ the class statement's body, ie:


class MyModel(models.Model):
   # stuff here

MyModel._meta.lat_lng_field = 'lat_lng'


4/ monkeypatch django.db.models.options to allow "lat_lng_field" in
Meta (very bad idea IMHO)

or simply:

5/ document the fact that the 'lat_lng' field name MUST be named
'lat_lng', period !-)


My 2 cents...

--

You received this message because you are subscribed to the Google Groups 
"Django users" group.
To post to this group, send email to django-us...@googlegroups.com.
To unsubscribe from this group, send email to 
django-users+unsubscr...@googlegroups.com.
For more options, visit this group at 
http://groups.google.com/group/django-users?hl=en.


Reply via email to