Django关联2个模型

时间:2012-12-29 22:13:11

标签: django

我不太确定如何通过谷歌找到这个并且搜索并没有引导我到任何地方。

如何以这样的方式关联2个模型:如果您在管理面板中删除一个条目,另一个将自动删除?

感谢您的帮助。

编辑:更新了示例。我希望一个事件能够描述其他竞争者,并且与事件的OneToOne关系的图片应该是主要的参赛者。因此,一旦主要参赛者被删除,我也想删除该赛事。不幸的是,我不能只在Event中添加ForeignKey关系或者会导致错误。那么,有没有办法为OneToOne关系做到这一点?

class Event(models.Model):
    competitors = models.ManyToManyField('Picture',null=True,blank=True)

class Picture(models.Model):
    competition = models.OneToOneField(Event) 

2 个答案:

答案 0 :(得分:4)

引用django docs

  

当Django删除一个对象时,默认情况下它会模拟对象的行为   SQL约束ON DELETE CASCADE - 换句话说,任何对象   有外键指向要删除的对象的将是   随之删除。

然后,这是默认行为。

有关详细信息,请参阅on_delete选项:

user = models.ForeignKey(User, blank=True, null=True, on_delete=models.SET_NULL)
The possible values for on_delete are found in django.db.models:

CASCADE: Cascade deletes; the default.
...

答案 1 :(得分:1)

假设您有两个模型:

class ModelA(models.Model):
    name = models.CharField(max_length=30)

class ModelB(models.Model):
    abc = models.CharField(max_length=30)
    model_a = models.ForeignKey(ModelA)

现在让我们做一些工作示例:

modelAObj = ModelA.objects.create(name='aamir')
modelBObj = ModelB.objects.create(abc='cde', model_a=modelAObj)
modelAObj.delete() # this will also delete the modelBObj