Personalizar la clave primaria en Django
Supongamos que tenemos la necesidad de utilizar una primary key personalizada en un modelo. O simplemente, supongamos que tenemos el capricho de cambiar el nombre de la clave primaria. Sea como sea, partimos de esta situación:
class Article(models.Model):
id = models.AutoField(primary_key=True)
...
Con el hecho de que definamos una primary key, estamos indicando a Django que no cree una clave primaria por defecto. Al utilizar AutoField, se asignará automáticamente el identificador entero que corressponda. ¿Qué problema tiene esto?
El hecho de establecer un campo como primary_key=True implica establecer null=False y unique=True. Pero cuando vamos a guardar un nuevo objeto, nos aparece un error indicando que no se ha especificado el campo id. ¿Cómo se soluciona esto? Simplemente indicando que el campo id puede dejarse en blanco (ya lo rellenará AutoField):
class Article(models.Model):
id = models.AutoField(primary_key=True,blank=True)
...
Tags
La teoría es cuando crees saber algo, pero no funciona.
La práctica es cuando algo funciona, pero no sabes por qué.
Los programadores combinan la teoría y la práctica:
Nada funciona y no saben por qué.
