ForeignKey to a model with a CharField primary key produces unexpected results for an empty-string PK value
|Reported by:||Ubercore||Owned by:||nobody|
|Component:||Database layer (models, ORM)||Version:||master|
|Has patch:||no||Needs documentation:||no|
|Needs tests:||no||Patch needs improvement:||no|
class ModelA(models.Model): code = models.CharField(max_length=50, primary_key=True) class ModelB(models.Model): model_a = models.ForeignKey(ModelA, blank=True, null=True, max_length=50)
In this case, if there's an instance of ModelA such that instance_a.code == '', ModelB will not be able to reference it properly. Upon save, db.models.fields.related.ForeignKey will change model_a_id from '' to NULL. While this is an odd case, and I don't particularly like the situation of having an empty string as a primary key, I think Django should at least be able to handle it. The offending code is at https://github.com/django/django/blob/master/django/db/models/fields/related.py#L987.