Modellerim var.Mysql veritabanımdaki bir Görünümü temsil eden alt sınıf (yani yönetilen = Yanlış). Benim birim testleri çalıştırırkendjango, model örneğinin silinmesini engeller
Ancak, alıyorum: Bu silme isteği
DatabaseError: (1288, 'The target table my_view_table of the DELETE is not updatable')
kaynak yabancı tuşu aracılığıyla (dolaylı) 'dir. Benim testlerde, ben ActualTableModel örneği siliyorum ait söküm boyunca
class MyViewModel(models.Model):
problematic_field = models.ForeignKey(ActualTableModel) # specifying on_delete=models.SET_NULL simply replaces the DELETE error with an UPDATE one
ve belgelenmiş davranış ilerlemekte olduğunun django görüntülenir:: I (basitleştirilmiş) var
When Django deletes an object, it emulates the behavior of the SQL constraint ON DELETE CASCADE -- in other words, any objects which had foreign keys pointing at the object to be deleted will be deleted along with it.
Bu neden olmak gibi görünüyor (yönetilen = Yanlış) Görünümüne uygulandığında sorunlar.
ben silinmesini önlemek için silme yöntemi geçersiz kılmasını denedim:
class MyViewModel(models.Model):
...
def delete(self, *args, **kwargs):
pass # deletion of a view row is never valid
ama bu sorunu çözmek vermedi.
Bu davranışı nasıl önleyebilirim?
teşekkürler. On_delete = models.SET_NULL'ı denedim, ancak DO_NOTHING'i gözden kaçırdım. İkincisi hatayı düzeltir. – sapi