I have the following two models:
class Provider(models.Model):
provider = models.CharField(max_length=100, unique=True)
class UserProfile(models.Model):
user = models.ForeignKey(User, unique=True)
provider = models.ForeignKey(Provider, db_column='provider')
When I try and save a new object, I get a FK error:
>>> from main_app.models import User, UserProfile, Provider
>>> p=Provider.objects.get(id=2)
>>> u=User.objects.get(id=1)
>>> p
<Provider: ACME>
>>> u
<User: david@premieredigital.net>
>>> UserProfile.objects.create(user=u, provider=p)
raise errorclass, errorvalue
IntegrityError: (1452, 'Cannot add or update a child row: a foreign key constraint fails
(`premiere`.`main_app_userprofile`, CONSTRAINT `provider_refs_provider_f2a06b37`
FOREIGN KEY (`provider`) REFERENCES `main_app_provider` (`provider`))')
What am I doing incorrectly here?
It seems MySQL expects your foreign key
providerto reference the columnproviderof themain_app_providertable. However, Django will store a reference to the primary key (idif not specified otherwise) in the foreign key. Try settingand rebuild your database, or change the MySQL foreign key constraint to use
idinstead ofprovider.