What is different between models.ForeignKey(Modelname, unique=True) and models.OneToOneField in Django?

Where should I use models.OneToOneField and models.ForeignKey(Modelname, unique=True)?

Edit
Report