2015-10-06 9 views
0

Я практиковал использование mongoengine в django.Автоматически удалять ссылки на объекты при удалении mongoengine в django

class RelativeTable(Document): 
    user = fields.ReferenceField(CustomUser) 
    device = fields.ReferenceField(Device, reverse_delete_rule=CASCADE) 

    meta = { 
     'collection': 'relative_table', 
     'allow_inheritance': True, 
     'indexes': [ 
      {'fields': ['user'], 'unique': True, 'sparse': True}, 
      {'fields': ['device'], 'unique': True, 'sparse': True}, 
     ] 
    } 

Через несколько раз на практике. Согласно вышеизложенному моим определением для документа, я обнаруживаю, что когда я удаляю устройство, он будет RelativeTable одновременно. Итак, я поступаю правильно?

Если я определяю user поле его reverse_delete_ruleRelativeTable в CASCADE, будет он также автоматически удаляется при удалении его относительной user?

deleting-embeddeddocument-with-filefield-from-listfield

mongoengine.fields.ReferenceField

ответ

0

Когда Полевое устройство RelativeTable документа устанавливает reverse_delete_rule=CASCADE, это означает, что, если соответствующее устройство удаляется, объект RelativeTable будут удалены одновременно.

Это похоже на функции MySQL. Когда вы используете SQL для определения поля отношений, например, ManyToManyField, OneToOneField, ForeignKey. A связывается с B. B удаляется, A также удаляется.

Смежные вопросы