【发布时间】:2021-03-19 14:19:27
【问题描述】:
当我删除信号中的 for 循环时,它可以工作(正确创建一个对象)但是当我使用 for 循环时,它应该为 Collection 对象中的每个帖子创建一个对象,但这不起作用。它甚至没有创建 Collection_List_Item 模型的对象。这个for循环不起作用有什么原因吗?有没有办法解决这个问题?
型号
class Collection(models.Model):
posts = models.ManyToManyField(Post, related_name='collection_posts', blank=True)
author = models.ForeignKey(User, on_delete=models.CASCADE, null=True)
collection_name = models.CharField(max_length=100)
collection_description = models.CharField(max_length=1000, blank=True)
collection_likes = models.ManyToManyField(User, related_name='liked_collections', blank=True)
collection_image = models.ImageField(upload_to="images/")
private = models.BooleanField(default=False)
follows = models.ManyToManyField(User, related_name='collection_follows', blank=True)
def __str__(self):
return self.collection_name
class Collection_List_Item(models.Model):
post = models.ForeignKey(Post, on_delete=models.CASCADE, null=True)
user = models.ForeignKey(User, on_delete=models.CASCADE, null=True)
collection = models.ForeignKey(Collection, on_delete=models.CASCADE, null=True)
saved = models.BooleanField(default=False)
created_date = models.DateTimeField(auto_now_add=True)
modified_date = models.DateTimeField(auto_now=True)
def __str__(self):
return self.collection.collection_name
信号:
@receiver(post_save, sender=Collection)
def create_collection_list_item(sender, instance, created, **kwargs):
if created:
for i in instance.posts.all():
collection_list_item = Collection_List_Item.objects.create(collection=instance, user=instance.author, post=i)
collection_list_item.save()
【问题讨论】:
标签: django django-models django-signals