Why does Django's User Model set the email field as non-unique?
django.contrib.auth uses the username field to identify a user, not the email address, so there is no conflict if two users have the same email address. 
Also, since the email address is not required, it is therefore blank or null in the database (neither of which make for good unique keys). 
And for your other question - the password reset will reset the password of the user who requested it, because it is requested by user name.  
Having two accounts with the same address can be quite handy. For example, perhaps one is an admin account and the other is a normal user.
I am using Django's default User model and the email is not unique, now I have multiple users with the same email address.
You can have User_A with email address user_a@example.com, and then a new user User_B can register with the same email address user_a@example.com.
This doesn't make sense in any programming universe, and it will cause confusion with email-sending functionality, and possible wrong password resets (if a password reset link is sent, with two users sharing the same email address).
This doesn't hold an obvious security vulnerability as I see it because only the original user has control of the original email address, so the attacker will not receive the reset emails.
However, this could result in the original user User_A being locked out of his original account (if he forgets his password) and being prevented of issuing a password reset because Django attempts to reset the new user User_B only. Obviously User_A wants access to his account, not to User_B's account.

What is the justification? 
Obviously the password reset functionality is linked with the email, so if I reset the password based on the email, which user (upon following the password reset link) will be reset?
How can I make the email field unique?