`get_or_create` isn't automatically including the primary key
I'm getting some really weird results. I tried to hack around it by calling `ModelResult.get(audio_id=af.id, model_id=tm.id)` and manually updating if it existed, and if it didnt, catching the `DoesNotExist` and manually creating the `ModelResult` with

```
max_id = ModelResult.select(fn.MAX(ModelResult.id)).scalar() + 1
mr = ModelResult(
            id=max_id,
            prediction=pred,
            loss=loss,
            audio_id=af.id,
            model_id=tm.id,
        )
mr.save()
```
It worked for like 20 rows and then the rows stopped getting added and the ID stopped incrementing. I set a breakpoint and everything looks good in the ModelResult instance but mr.save() is returning 0. I searched and found #1198 which makes me think something is really wrong. 

**Edit:** I started using `mr.save(force_insert=True)` which worked and then checked the docs and saw that it happens when you create your own non-integer primary key which I don't think I did. My schema doesn't use `PrimaryKey` anywhere but I checked the schema in SQLite browser and I now see that the `id` field for `ModelResult` is `NUMERIC` not `INTEGER`. I'm not sure how this happened but I believe that's the issue. I'm going to explore a bit more and I'll post here and close out if I confirm.  There's nothing wrong with peewee, surely this is something in your code or schema.

```python
class Audio(Base):
    name = TextField()

class Note(Base):
    name = TextField()

class Result(Base):
    audio = ForeignKeyField(Audio)
    note = ForeignKeyField(Note, null=True)

db.create_tables([Audio, Note, Result])

a1 = Audio.create(name='a1')
a2 = Audio.create(name='a2')
n1 = Note.create(name='n1')
n2 = Note.create(name='n2')

r1a, created = Result.get_or_create(audio=a1)
assert created
r1b, created = Result.get_or_create(audio=a1)
assert not created
assert r1a.id == r1b.id

r2a, created = Result.get_or_create(audio=a2, note=n2)
assert created
r2b, created = Result.get_or_create(audio=a2, note=n2)
assert not created
assert r2a.id == r2b.id
```
I have a field `ModelResult` with a foreignkey for an `Audio` class. I recently updated `ModelResult` to take a 2nd foreign key for a `Model` class. When I call `get_or_create` I get the error `IntegrityError: NOT NULL constraint failed: modelresult.id`. For some reason the id isn't being automatically included/incremented, but if I include it manually in the defaults (e.g. {"id": 10000000}, it works). My intention is that if a row exists with that combination of audio and model, update it, otherwise create it. Any idea where I might be going wrong? 

Thank you by the way, peewee is a pleasure to work with. 

```
audio = AudioFile.get(AudioFile.filename == fname)
tm, created = TrainModel.get_or_create(name=model_name)
defaults = {
        "prediction": pred,
        "loss": loss,
    }
mr, created = ModelResult.get_or_create(audio_id=audio, model_id=tm, defaults=defaults)
# if mr already exists, update it with new values
```