2017-05-08 1 views
0

J'ai un modèle, Location avec une clé étrangère auto-référentielle. En cas de suppression du parent d'un endroit, je veux mettre son parent_id à son grand-parent l'ID, mais il fallait s'y attendre, ce qui suit jette l'erreur name 'parent' is not defined:Django Définir la clé étrangère à la valeur parente lors de la suppression

class Location(Model): 
    parent = models.ForeignKey('self', models.SET(parent)) 

Si je devais supprimer Colorado de ce tableau:

| id | name  | parent_id | 
|----|----------|-----------| 
| 1 | USA  | NULL  | 
| 2 | Canada | NULL  | 
| 3 | Colorado | 1   | 
| 4 | Utah  | 1   | 
| 5 | Denver | 3   | 
| 6 | Boulder | 3   | 

Je voudrais que le résultat à ressembler à ceci:

| id | name  | parent_id | 
|----|----------|-----------| 
| 1 | USA  | NULL  | 
| 2 | Canada | NULL  | 
| 4 | Utah  | 1   | 
| 5 | Denver | 1   | 
| 6 | Boulder | 1   | 

Répondre

0

Oui, l'erreur est attendue, le models.SET ca n prendre un appelable mais il n'accepte aucun argument d'où le problème reste car nous n'avons pas accès à l'objet étant effacé, ce que vous essayez d'atteindre peut être traité par post_delete signal: