Yönetici arayüzünde bir nesneyi silerken, ilgili nesnelerin kaldırılmasını önlemek istiyorum. RelatedObject
yılında ForeignKey
nullDjango: Yönetici göreli nesneleri silmeden nasıl yapılır?
class ObjectToDelete(models.Model):
timestamp = models.DateTimeField()
class RelatedObject(models.Model):
otd = models.ForeignKey('app.ObjectToDelete', null=True, blank=True)
beri, yerine bütün nesneyi silinmesinin None
olarak ayarlayın gerekir. Ve bu tam olarak sahip olmak istediğim davranış.
Bu yönetici arabirimi için özel silme eylemleri oluşturabileceğimi biliyorum.
Ayrıca, RelatedObject
'un kaldırılmasını da engelleyen ObjectToDelete
numaralı telefondan ManyToManyField
yapabildiğimin de farkındayım. Ama sonra istediğim bire çok ilişkisi olmazdı.
Bunu gerçekleştirmenin basit bir yolu var mı?
['SET_NULL'] kullanmak daha iyi olabilir (https://docs.djangoproject.com/en/1.9/ref OP, ilgili nesnenin silinmesini istemediğinden, örneğin 'CASCADE' yerine sizin örneğiniz için /models/fields/#django.db.models.SET_NULL). – Alasdair
@Alasdair, evet haklısınız SET_NULL'u burada kullanabiliriz. Ancak performans açısından her ikisi de veritabanı seviyesinde, kimin daha hızlı olduğundan emin olamaz. –
Hangisi daha hızlı değil. 'Models.CASCADE' kullanarak (Django 2.0'a kadarki varsayılan davranış) ilgili nesneleri siler. Tam olarak OP'nin kaçınmaya çalıştığı şey bu. – Alasdair