当用户更改某个对象的URL时,应删除该对象并创建一个新对象:
### other fields here ###
issue = models.ManyToManyField(Issue, null=False, blank=False,)
def __init__(self, *args, **kwargs):
super(MyModel, self).__init__(*args, **kwargs)
self.__original_url = self.url
def save(self, *args, **kwargs):
if self.url != self.__original_url:
my_new_object = MyModel.objects.create(####)
my_new_object.save()
my_new_object.issue.add(self.issue) 问题是self.issue没有返回任何结果。我也试过了
my_new_object.issue.add(MyModel.objects.get(pk = self.id).issue)同样的事情。这有什么问题吗?
发布于 2019-07-02 14:16:21
使用以下代码:
obj = my_new_object.save(commit=False)
obj.issue.add(self.issue)
obj.save()发布于 2019-07-02 18:09:46
问题出在这里:
my_new_object.issue.add(self.issue)
您基本上尝试添加一个QuerySet,而不是一个实例。
尝试使用:
issues = self.issue.all()
for issue in issues:
self.issue.add(issue)或者更简洁:
my_new_object.issue.add(*self.issue.all())https://stackoverflow.com/questions/56843751
复制相似问题