2015-04-09 1 views
0

Я пытаюсь удалить экземпляр модели в двух базах данных, когда пользователь удаляет ее в администраторе. Когда они создают новый экземпляр и сохраняют его, он переходит в обе базы данных. Но я не могу удалить его из обеих баз данных, поскольку первый вызов для удаления удаляет экземпляр, поэтому второй вызывает ошибку утверждения. Есть ли способ поймать экземпляр и удалить их из обеих баз данных одновременно?Не удается удалить экземпляр из двух баз данных в модели Django

class Change(models.Model): 
    content = models.TextField() 
    date = models.DateField(auto_now = True) 

    def save(self): 
     super(Change, self).save(using='default') 
     super(Change, self).save(using='labs') 

    def delete(self): 
     #Here it is deleted from the default database. 
     super(Change, self).delete(using='default') 
     #This doesn't work because Ive deleted the instance. How do I get this to work as well? 
     super(Change, self).delete(using='labs') 

ответ

0

Вы уверены, что экземпляр имеет одинаковую pk значения, если оба баз данных? Если да, то вы должны восстановить pk экземпляра перед удалением со второго разряда:

def delete(self): 
    pk = self.pk 
    super(Change, self).delete(using='default') 
    self.pk = pk 
    super(Change, self).delete(using='labs') 
+0

Это работает. Я делал что-то подобное, когда я устанавливал идентификатор, но когда я удалил его, первый раз он удалит мою ссылку. Я нашел решение, используя сигнал, приемники и raw sql. Это намного более элегантно. Благодаря! – user1410712

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