title: Foreign key query error in case of custom uint64 field which was used as a primary key
body: <p>I needed uint64 field as primary key field for my database, expectedly other models used foreign key to point to this model. Resulting code was something like this:</p>
  
  <pre><code>from peewee import *
  
  db = SqliteDatabase('test.db')
  
  class UInt64(Field):
      db_field = 'bigint'
  
      def db_value(self, value):
          return value - (1&lt;&lt;63)
  
      def python_value(self, value):
          return value + (1&lt;&lt;63)
  
  class Foo(Model):
      id = UInt64(primary_key = True)
  
      class Meta:
          database = db
  
  class Bar(Model):
      id = UInt64(primary_key = True)
      foo = ForeignKeyField(Foo, related_name='bars')
  </code></pre>
  
  <p>This code works properly for all requests used by me expect one:</p>
  
  <pre><code>&gt;&gt;&gt; f = Foo.create(id=10000)
  &gt;&gt;&gt; Bar.create(id=123, foo=f)
  &lt;ptest.Bar object at 0x7f2fde7f7e10&gt;
  &gt;&gt;&gt; b = Bar.get()
  &gt;&gt;&gt; b.id
  123
  &gt;&gt;&gt; b.foo
  Traceback (most recent call last):
    File "&lt;stdin&gt;", line 1, in &lt;module&gt;
    File "/usr/local/lib/python3.4/dist-packages/peewee.py", line 1151, in __get__
      return self.get_object_or_id(instance)
    File "/usr/local/lib/python3.4/dist-packages/peewee.py", line 1142, in get_object_or_id
      obj = self.rel_model.get(self.field.to_field == rel_id)
    File "/usr/local/lib/python3.4/dist-packages/peewee.py", line 4403, in get
      return sq.get()
    File "/usr/local/lib/python3.4/dist-packages/peewee.py", line 2812, in get
      return clone.execute().next()
    File "/usr/local/lib/python3.4/dist-packages/peewee.py", line 2859, in execute
      self._qr = ResultWrapper(model_class, self._execute(), query_meta)
    File "/usr/local/lib/python3.4/dist-packages/peewee.py", line 2555, in _execute
      return self.database.execute_sql(sql, params, self.require_commit)
    File "/usr/local/lib/python3.4/dist-packages/peewee.py", line 3359, in execute_sql
      cursor.execute(sql, params or ())
  OverflowError: Python int too large to convert to SQLite INTEGER
  </code></pre>
  
  <p>It seems that somewhere conversion between python value and db value was not done properly. Looks like a bug to me.</p>
  
  <p>Any ideas how it can be fixed without directly saving foo id in Bar as UInt64 instead of use of ForeignKeyField?</p>