首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >m2m返回None

m2m返回None
EN

Stack Overflow用户
提问于 2019-07-02 07:54:39
回答 2查看 45关注 0票数 0

当用户更改某个对象的URL时,应删除该对象并创建一个新对象:

代码语言:javascript
复制
    ### 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没有返回任何结果。我也试过了

代码语言:javascript
复制
my_new_object.issue.add(MyModel.objects.get(pk = self.id).issue)

同样的事情。这有什么问题吗?

EN

回答 2

Stack Overflow用户

发布于 2019-07-02 14:16:21

使用以下代码:

代码语言:javascript
复制
obj = my_new_object.save(commit=False)
obj.issue.add(self.issue) 
obj.save()
票数 0
EN

Stack Overflow用户

发布于 2019-07-02 18:09:46

问题出在这里:

my_new_object.issue.add(self.issue)

您基本上尝试添加一个QuerySet,而不是一个实例。

尝试使用:

代码语言:javascript
复制
issues = self.issue.all()
for issue in issues:
    self.issue.add(issue)

或者更简洁:

代码语言:javascript
复制
my_new_object.issue.add(*self.issue.all())
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56843751

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档