Why does saving a model in a loop over a query go twice over the first two items?
Just to add to the confusion. If I run the loop one time before I run it while saving, it doesn't loop 3 times:

```
users = User.select()
for user in users: pass

for user in users:
    print 'We\'re now storing a pm for user: ', user.name
    pm = PM()
    pm.user = user
    pm.text = ''.join([random.choice(string.ascii_letters) for n in xrange(25)])
    pm.save()
```

This also correctly prints out:

```
We've got so many users:  3
We're now storing a pm for user:  A
We're now storing a pm for user:  B
We're now storing a pm for user:  C
```

but when I remove the line `for user in users: pass` it does this again:

```
We've got so many users:  3
We're now storing a pm for user:  A
We're now storing a pm for user:  B
We're now storing a pm for user:  A
We're now storing a pm for user:  B
We're now storing a pm for user:  C
```

Any idea why a loop before the second loop would influence the behaviour?
 http://docs.peewee-orm.com/en/latest/peewee/database.html#common-pitfalls-with-sqlite

I'm trying to save something for every user in a db, but to my surprise the loop goes double over the first two items. 

```
#!/usr/bin/env python
import os, random, string
from peewee import *

DB_NAME = 'people.db'
db = SqliteDatabase(DB_NAME)

class User(Model):
    name = CharField()
    class Meta:
        database = db

class PM(Model):
    user = ForeignKeyField(User)
    text = TextField()
    class Meta:
        database = db

try:
    os.remove(DB_NAME)
    print 'Deleted the existing DB'
except OSError:
    print 'No db present. Creating one.'

db.create_tables([User, PM])

for name in ['A', 'B', 'C']:
    u = User()
    u.name = name
    u.save()

print 'We\'ve got so many users: ', User.select().count()

for user in User.select():
    print 'We\'re now storing a pm for user: ', user.name
    pm = PM()
    pm.user = user
    pm.text = ''.join([random.choice(string.ascii_letters) for n in xrange(25)])
    pm.save()  # comment this line out and see what happens.
```

This prints out:

```
We've got so many users:  3
We're now storing a pm for user:  A
We're now storing a pm for user:  B
We're now storing a pm for user:  A
We're now storing a pm for user:  B
We're now storing a pm for user:  C
```

When you comment out the last line, it correctly prints out:

```
We've got so many users:  3
We're now storing a pm for user:  A
We're now storing a pm for user:  B
We're now storing a pm for user:  C
```

I tried whether this is caused by the ForeignKeyField, but if I do the same with an unrelated table ([code here](http://pastebin.com/ayWGbqkT)) I see the same behaviour.

Does anybody know what's wrong here?

ps. I have the feeling that I've encountered this before, but I can't remember how I dealt with it back then and I can't find any issues from myself about this.
