У меня есть такие модели:
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=
, но я не вижу, что ставить после =
.) Как удалить job и some_vendor?