2016-05-17 1 views
2

Я определил в Django две модели, второй из которых основан на первом и не управляется, поскольку он основан на базе SQL вид сервера (не на столе)В Django не удается удалить экземпляр модели из-за FK во второй (и на основе представления) модели

class Embedder(models.Model): 
    {my_fields...} 

class MostRecent(models.Model): 
    embedder = models.ForeignKey(Embedder) 
    status = models.IntegerField() 

    class Meta: 
    db_table = 'embedder_most_recent' 
    managed = False 

проблема в том, что я не могу удалить экземпляр Embedder из-за этой ошибки:

View or function 'embedder_most_recent' is not updatable because the modification affects multiple base tables. (4405) (SQLExecDirectW)") 

проблема, кажется, находятся в Django, так как я могу удалите строку внедрения в SQL без ошибок. Как я могу решить проблему?

+0

Спасибо за вашу помощь, ребята. – Patrick

ответ

1

Как уже было опубликовано marcusshep, в документах Django имеется достаточная документация.

Поскольку Django ForeignKey ссылается на другой объект модели Django, любая попытка удалить родительский объект означает, что Django должен найти способ управления объектами, ссылающимися на ForeignKey. Вы должны явно указать это поведение.

В приведенном ниже примере будет удалить объект, содержащий ForeignKey:

class MostRecent(models.Model): 
    embedder = models.ForeignKey(Embedder, on_delete=models.CASCADE) 
    status = models.IntegerField() 
Смежные вопросы