Я хочу знать, есть ли способ получить обновленное поле «многие ко многим» в одной модели, используя сигналы, и опубликовать их в другой модели
class Post(models.Model):
name=models.CharField(max_length=24)
nc=models.ManyToManyField(settings.AUTH_USER_MODEL)
def __str__(self):
return self.name
# return self.name
m2m_changed.connect(receiver=like_post,sender=Post.nc.through)
Я хочу собрать обновленную запись вПоле nc для модели поста и использования сигналов. Я хочу создать объект с помощью функции, вот сигнал, который подключается к модели поста
def like_post(sender, *args, **kwargs):
# if kwargs['action'] in ('post_update'):
if kwargs['action'] in ('post_add', 'post_remove','post_update'):
print(kwargs['instance'])
instance = kwargs['instance']
print(instance)
notify = Notify.objects.create(
recipient=instance,
creator=Post.objects.get(pk=50),
state='unread',
type=kwargs['action'],
)
else:
print('no instance')
в получателе и в разделе создателя. Я хочу обновить эти поля существующимпользовательский объект, создатель - это человек, который обновил поле manytomany, а получатель - это человек, который создал этот пост
notify model:
class Notify(models.Model):
recipient = models.ForeignKey(settings.AUTH_USER_MODEL, related_name='notify_recipient',on_delete=models.CASCADE)
creator = models.ForeignKey(settings.AUTH_USER_MODEL, related_name='notify_sender',on_delete=models.CASCADE)
state = ('read', 'unread', 'unseen')
type = models.CharField(max_length=30, blank=True)
url = models.CharField(max_length=50, blank=True)
, когда я запускаю этот экземпляр, экземпляр просто печатает имя объекта поста и выдает эту ошибку
ValueError at /admin/posts/post/50/change/
Cannot assign "<Post: ok>": "Notify.recipient" must be a "User" instance.