2011-02-06 8 views

Respuesta

44

http://docs.djangoproject.com/en/dev/ref/models/fields/#foreignkey

Para crear un rel recursiva una relación - un objeto que tiene una relación uno a uno consigo misma - use .

Así que lo tienes bien. Por lo general, es más rápido determinar si el código hará lo que usted desea ejecutando :)

+1

Gracias por responder. Además, el hecho de que algo parece funcionar no significa que sea una buena idea hacerlo de esa manera. Es mejor descubrir la forma correcta y aprender de la experiencia y los errores de otras personas. – dsjoerg

2

Puede hacer referencia a otros modelos por nombre (utilizando una cadena, incluyendo del paquete), en lugar de por la clase directamente:

Por lo tanto, si su clase Employee está en el hr aplicación:

class Employee(models.model): 
    other_employee = models.ForeignKey('hr.models.Employee', null=True, blank=True) 
+1

me encontré con que la referencia necesaria para dejar de lado parte de los 'modelos' de la referencia del modelo (es decir, 'models.ForeignKey ('hr.Employee', null = True, blank = True) ') – CoatedMoose

0

Una restricción forzando id y ref_employee_id a tener valores separados está fuera del alcance del ORM de Django. Tendrá que agregar dicha restricción en el nivel de la base de datos, a través de SQL en syncdb o manualmente.

2

creo que incluso se puede excluir el nombre de la aplicación, que se vería así:.

ref_employee= models.ForeignKey('Employee',null=True,blank=True) 
Cuestiones relacionadas