我有这样的模型:
class Job(models.Model):
ref = models.CharField(max_length=13)
client = models.ForeignKey(Client, on_delete=models.CASCADE)
vendor = models.ForeignKey(Vendor, on_delete=models.SET_NULL, null=True,blank=True)
class Client(models.Model):
name = models.CharField(max_length=100)
phone = models.CharField(max_length=13, null=True, blank=True)
class Vendor(models.Model):
name = models.CharField(max_length=100)
phone = models.CharField(max_length=13, null=True, blank=True)
我知道我可以创建一个Job实例(实际上是通过管理站点,但等效):
job= Job.objects.create(
ref='1',
client=Client(name='some_client'),
vendor=Vendor(name='some_vendor',phone='01245 678 897)
我知道:
i)如果我删除some_client
,那么job
也将被删除。
ii)如果我删除some_vendor
,则job
仍然存在,但现在job.vendor = null
iii)如果我删除job
,则some_client
和some_vendor
将保留。
但是我想删除job
,保留some_client
并删除some_vendor
。
这是因为每个作业只能有一个供应商,每个供应商只能属于一个作业。 job
删除后,some_vendor
成为孤立的。
我尝试为OneToOne
使用vendor
关系,但是在删除some_vendor
时并没有删除job
。
我猜测我的问题是不正确地为供应商使用了ForeignKey
或对ForeignKey
使用了错误的选项。 (也许我应该使用related_name=
,但看不到放在=
之后的内容。)
如何删除工作和some_vendor?