Я нашел много способов сделать это, но вроде ничего не работает. У меня есть модель, которая имеет manytomanyfield с другой моделью, я хочу иметь возможность сравнивать старые значения из поля manytomany и новые.
class A(models.Model):
registers = models.ManyToManyField('B',blank=True)
def save(self,*args,**kwargs):
try:
old_registers = self.__class__.objects.get(pk=self.pk).registers.all()
print(old_registers)
print(old_registers.difference(self.registers.values_list()))
except A.DoesNotExist:
old_registers = None
if (old_registers != None) and old_registers.difference(self.registers.values_list()):
print("Values changed")
class B(models.Model):
name = models.CharField(max_length=32)
Обратите внимание, что я взаимодействую с моделями в Django Admin.
Когда я сохраняю экземпляр, я всегда получаю старые значения для self.__class__.objects.get(pk=self.pk).registers.all()
и self.registers.all()
, и кажется, что новые значения (новые выбранные экземпляры) никогда не приходят.