作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
如果我们设置个人资料,Django如何建议:
class Profile(models.Model):
user = models.ForeignKey(User, unique=True)
User
对象时,它也会同时删除其个人资料,这是因为该个人资料具有用户外键,并且希望保护参照完整性。但是,即使指针朝其他方向移动,我也需要此功能。例如,在我的
Profile
类上,我有:
shipper = models.ForeignKey(Shipper, unique=True, blank=True, null=True)
carrier = models.ForeignKey(Carrier, unique=True, blank=True, null=True)
affiliat = models.ForeignKey(Affiliate, unique=True, blank=True, null=True, verbose_name='Affiliate')
Profile
,它将删除关联的托运人/承运人/附属对象(不要问我为什么Django使“附属”一些奇怪的关键字)。因为托运人,承运人和成员(member)是用户的类型,所以没有其余数据就没有它们存在(没有人能够一次登录)是没有意义的。
最佳答案
虽然使用上述bernardo所述的post_delete信号是一种不错的方法,但效果很好,但我尝试避免使用尽可能少的人为信号,因为我觉得这会不必要地在标准功能中添加行为,从而使代码不必要的麻烦可能在期待。
我更喜欢上面的重载方法,但是,Felix给出的示例确实有一个致命缺陷。覆盖的delete()函数如下所示:
def delete(self, using=None):
using = using or router.db_for_write(self.__class__, instance=self)
assert self._get_pk_val() is not None, "%s object can't be deleted because its %s attribute is set to None." % (self._meta.object_name, self._meta.pk.attname)
collector = Collector(using=using)
collector.collect([self])
collector.delete()
class Profile(models.Model):
# ...
def delete(self, using=None):
if self.shipper:
self.shipper.delete()
if self.carrier:
self.carrier.delete()
if self.affiliat:
self.affiliat.delete()
super(Profile, self).delete(using)
关于django - Django删除异物?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2263233/
我正在使用 D3 渲染一个简单的网络图。在每个节点中,我想显示使用该外来对象的 html 内容。外部对象里面有 html。网络正在渲染。但我无法查看 html 内容有人知道为什么它不渲染 html 吗
我有一些对象集合,它们之间具有基本的一对多关系。我的目标是编写一个函数(或必要时可以组合的函数),以便解析/将外部 ID 字段注入(inject)外部对象。 例如,我有以下对象: const stor
我是一名优秀的程序员,十分优秀!