У меня есть две модели:
class Instrument(MPTTModel):
name = models.CharField(max_length=100, null=True, blank=True)
category = models.CharField(max_length=100, null=True, blank=True)
class Instrumentation(models.Model):
instrument = models.ManyToManyField(Instrument, verbose_name=_('instrument'), related_name='instrumentation', blank=True)
Я хочу добавить метод сохранения в модель инструмента, где метод будет проверять, есть ли у инструмента уже объект, который имеет единственную связь с текущим инструментом. Если нет, я создам инструментальный объект с одним отношением к текущему инструменту. Если так, то ничего не происходит. Если в инструменте есть другой объект, имеющий отношение к скрипке, скрипке и виолончели. Это будет игнорироваться.
Например.
Я пытаюсь сохранить объект инструмента под названием «скрипка». Метод сохранения инструмента будет искать таблицу инструментов, чтобы увидеть, существует ли инструментальный объект, который содержит единственную связь со скрипкой. Если он не существует, то он создаст объект инструментария с отношением «скрипка».
У меня есть что-то вроде, но я не могу получить правильный фильтр:
В модель прибора:
def save(self, *args, **kwargs):
try:
exists = Instrumentation.objects.filter(name=self.name)
except:
new = Instrumentation.objects.create(
instrument=self.pk,
name=self.name,)
new.save()
super().save(*args, **kwargs)