prefetch fails when foreign key field or target primary key field not selected
Yeah, prefetch needs those fields to be able to reconstruct the graph. I'll make a note in the docs.
This is not a bug, but rather a minor UX issue. Consider this simple example:

```python
import peewee


db = peewee.SqliteDatabase(":memory:")


class _BaseModel(peewee.Model):
    class Meta:
        database = db


class User(_BaseModel):
    name = peewee.TextField()


class Entry(_BaseModel):
    user = peewee.ForeignKeyField(User, backref="entries")
    content = peewee.TextField()


def main():
    db.create_tables([User, Entry])
    User.insert(name="foo").execute()
    Entry.insert(user_id=1, content="bar").execute()
    user_query = User.select(User.name)  # User.id not selected
    entry_query = Entry.select(Entry.content)  # Entry.user_id not selected
    peewee.prefetch(user_query, entry_query)


if __name__ == "__main__":
    main()
```

The prefetch fails when either `User.id` or `Entry.user_id` is not selected, as prefetch can't link the models together without either. The errors are slightly cryptic too if one doesn't realize what's going on

```python-traceback
...
  File "/Users/zmwang/.pyenv/versions/3.8.0/lib/python3.8/site-packages/peewee.py", line 7421, in store_instance
    identity = field.rel_field.python_value(instance.__data__[attname])
KeyError: 'user'
```

```python-traceback
...
  File "/Users/zmwang/.pyenv/versions/3.8.0/lib/python3.8/site-packages/peewee.py", line 7412, in populate_instance
    identifier = instance.__data__[field.rel_field.name]
KeyError: 'id'
```

(It may seem silly to specify the fields to be selected in this simple example, but in general I refrain from `SELECT *` and only select what I need.)

Maybe `prefetch` could add the relation fields it require automatically? Not sure about feasibility implementation-wise. Failing that, maybe add a little note to the API docs?