query order_by example back_populates sql sqlalchemy foreign-keys foreign-key-relationship

order_by - SQLAlchemy permite nulo como ForeignKey



sqlalchemy relationship example (2)

null no es válido para una fila secundaria. Como alternativa, cree un padre que solo se use para hijos "nulos" y establezca la clave para esa identificación. Realmente no entiendo el propósito de esto ya que no quieres registros huérfanos. Si la relación no es realmente de 1 a muchos con una relación padre-hijo, entonces debería considerar un tipo de relación diferente o tal vez agregar un campo para hacer que los registros secundarios estén inactivos.

Digamos que tengo dos modelos

class EntityModel(DB.Model): id = DB.Column(DB.Unicode(37), primary_key=True) class DocumentModel(DB.Model): id = DB.Column(DB.Unicode(37), primary_key=True) entity_id = DB.Column(DB.Unicode(37), DB.ForeignKey(''entity.id'', ondelete=''cascade''), nullable=True) entity = DB.relationship(''EntityModel'')

Puedo crear un nuevo documento con entity_id NULL. Pero una vez que establezco valid_id para ese documento, ya no puedo volver a anularlo. Me sale un error:

Cannot add or update a child row: a foreign key constraint fails

¿Cómo puedo establecer null en entity_id en algún documento, si tiene entity_id válido?


su definición de ORM se ve bien, DocumentModel.entity_id es nulable de hecho. Lo que haría en este caso es verificar la definición real de la tabla en MySQL y asegurarse de que se corresponda con su definición ORM, por ej.

-- make sure DocumentModel.entity_id is nullable : SHOW CREATE TABLE DocumentModel/G UPDATE DocumentModel.entity_id SET entity_id = NULL WHERE entity_id = XXX;