How to define a field wich requires to call DB function? 
Yeah that's a bit tricky, but it should be possible. Did you try something like:

``` python
class PointField(Field):
    db_field = 'point'  # Assuming you would hook this up to a field type registered w/the db.

    def db_value(self, value):
        if value:
            return fn.St_PointFromText(value)
```

**EDIT** nevermind, that won't work as it's only called on parameters that are being 'interpolated' into the query.
 I'm not sure the best way to make this DRY, but you could try:

``` python
class PointField(Field):
    db_field = 'point'

def pft(value):
    return fn.St_PointFromText(value)

Coord.insert(point=pft('34.40032,10.1010101'))
Coord.update(point=pft('35.303,10.101')).where(Coord.id == 3)
Coord.select().where(
    Coord.point == pft('35.303,10.101'))
```
 Here's something that hopefully helps:

``` python
from peewee import *

class PointField(Field):
    db_field = 'point'

db = SqliteDatabase(':memory:')
db.register_fields({'point': 'POINT'})

class Coord(Model):
    point = PointField()

    class Meta:
        database = db

def pft(v):
    return fn.St_PointFromText(v)

coords = '38.9717,95.2353'
print Coord.insert(point=pft(coords))
print Coord.update(point=pft(coords)).where(Coord.point == pft('39.0,96.0'))
print Coord.select().where(Coord.point == pft(coords))
```

---

```
<class '__main__.Coord'> INSERT INTO "coord" ("point") VALUES (St_PointFromText(?)) ['38.9717,95.2353']
<class '__main__.Coord'> UPDATE "coord" SET "point" = St_PointFromText(?) WHERE ("point" = St_PointFromText(?)) ['38.9717,95.2353', '39.0,96.0']
<class '__main__.Coord'> SELECT t1."id", t1."point" FROM "coord" AS t1 WHERE (t1."point" = St_PointFromText(?)) ['38.9717,95.2353']
```
 Thanks! I will give it a try asap. The trick was the use of the fn stuff ;)
 It works perfectly!

I would need to manage GIS data creation, given the DB support it (eg PostGIS for Postgresql, MySQL a bit by default, Spatialite for Sqlite). 
The minimal requirement is to define a field which can wrap the value with a DB function. 
Eg, to save a point with PostGIS, I could call "St_PointFromText(string_value)", and "St_AsText" to retrieve it. 
I can't figure out how this could be done with a custom field... 
