当用户更改对象的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正在重新调整None。 我也尝试过
my_new_object.issue.add(MyModel.objects.get(pk = self.id).issue)
同一件事。 这怎么了?
答案 0 :(得分:0)
使用以下内容:
obj = my_new_object.save(commit=False)
obj.issue.add(self.issue)
obj.save()
答案 1 :(得分:0)
问题在这里:
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())