Issue with union queries for models with similar columns
I wouldn't say you're doing anything wrong. What's happening is the result-rows from the cursor look like:

```sql
select t1.id, t1.user_id, t1.content, t2.id, t2.username 
from tweet as t1 
inner join users as t2 on (t1.user_id=t2.id) 
where t2.id = 1 
union 
select t3.id, t3.user_id, t3.content, t4.id, t4.username 
from tweet as t3 
inner join users as t4 on (t3.user_id=t4.id);
```

Produces:

```
id|user_id|content|id|username
 1|      1|   u1-1| 1|      u1
 2|      1|   u1-2| 1|      u1
 3|      2|   u2-1| 2|      u2
```

When peewee iterates over the result rows, it sees columns named (id, user_id, content, id, username). The 2nd id corresponds to the user's id rather than the tweet id. You can fix this in a number of ways without needing to update peewee:

1. Don't select the user's id.
2. Alias the user's id to a different attribute.

With the patch I've just pushed (80a2048837100c102d5387366cb1a5531739cb91) it should no longer be a problem, because:

1. Instead of putting all attributes onto the selected model when a UNION is present, attempt to resolve the model graph. So the user's "id" and "username" would be put on Tweet.user (e.g. tweet.user.id, tweet.user.username).
2. When returning a flat result, do not overwrite attrs. So "id" in your example would be the tweet id since that's the first "id" column we see. The 2nd user "id" would not be stored. Got it. Looks like 3.2.4 works for me. Thanks!
When I union two queries that are selecting multiple models, the IDs seem to be confused (actually any column with the same name):

```python
query = Tweet.select(Tweet, User).join(User).where(User.id == 1)
query2 = Tweet.select(Tweet, User).join(User)

union = query | query2

for t in union:
    print(t.id)
```

Outputs `1` twice, where I would expect `1` followed by `2`. I've only tested on sqlite with latest 3.x release of peewee. Am I doing something wrong? This worked in the last 2.x release I tested.