我正在考虑对记录进行软删除。如果“网站”不是外键(例如“ RetailerRatingGroup”),则应照常删除它。但是,它是另一个对象的外键,我想取消删除,而是将Website.active属性更改为false。 谁能为我指出正确的方向。
class Website(models.Model):
retailer = models.ForeignKey('Retailer', on_delete=models.PROTECT)
url = models.URLField()
short_name = models.CharField(max_length=15)
active = models.BooleanField(default=True)
class RetailerRatingGroup(models.Model):
retailer = models.ForeignKey(Retailer, on_delete=models.PROTECT)
channel_productcat = models.ForeignKey('ChannelProductcatGroup', on_delete=models.PROTECT)
website = models.ForeignKey(Website, blank=True, null=True, on_delete=models.PROTECT)
current_rating = models.ForeignKey('Rating', default=None, blank=True, null=True, on_delete=models.SET_DEFAULT)
答案 0 :(得分:0)
好的...所以在四处张望之后,我发现了以下内容:
class SoftDeleteInlineFormset(BaseInlineFormSet):
def delete_existing(self, obj, commit=True):
if commit:
if not obj.retailerratinggroup_set.all().exists():
obj.delete()
else:
obj.active = False
obj.save()
WebsiteFormSet = inlineformset_factory(Retailer, Website, form=WebsiteForm, formset=SoftDeleteInlineFormset, max_num=10, extra=3, can_delete=True)
理想情况下,最好查看是否有任何模型使用网站实例作为外键。