首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >添加m2m数据:带有基10的int()的文本无效

添加m2m数据:带有基10的int()的文本无效
EN

Stack Overflow用户
提问于 2016-02-12 20:25:01
回答 2查看 130关注 0票数 0

从我的Profile模型到我的Skills模型,我有一个多到多的关系。如果我试图清除并向配置文件中添加新技能,就会得到invalid literal for int() with base 10: 'Python' (Python是处理的第一项技能)。

我不知道该怎么做,因为我100%肯定是将模型实例传递给user.profile.skills.add()

代码语言:javascript
复制
skills = ['Python', 'PHP', 'back-end', 'CSS', 'MYSQL']
skills_to_add = []
for s in skills:
    try:
        skill = Skill.objects.get(name__iexact=s)
    except Skill.DoesNotExist:
        skill = Skill()
        skill.name = s
        skill.save()
    except Skill.MultipleObjectsReturned:
        print "Duplicate skill found: " + s
        continue

    skills_to_add.append(skill)

if len(skills_to_add):
    user.profile.skills.clear()
    user.profile.skills.add(*skills)
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-02-12 20:54:43

不应该向user.profile.skills添加字符串列表,应该添加Skill对象列表。

换句话说,使用skills_to_add而不是skills

票数 0
EN

Stack Overflow用户

发布于 2016-02-12 20:46:11

代码语言:javascript
复制
skills = ['Python', 'PHP', 'back-end', 'CSS', 'MYSQL']
for s in skills:
    try:
        skill = Skill.objects.get(name__iexact=s)
    except Skill.DoesNotExist:
        skill = Skill()
        skill.name = s
        skill.save()

    except Skill.MultipleObjectsReturned:
        print "Duplicate skill found: " + s
        continue

    skills_to_add.append(skill)

if len(skills_to_add):
    user.profile.skills.clear()
    profile = Profile.objects.get(user_id=user.id)
    for obj in skills_to_add:
        profile.skills.add(obj)
    profile.save()

skills是配置文件模型中的字段m2m

代码语言:javascript
复制
...
skills = models.ManyToManyField(Skill,...)
...
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35371597

复制
相关文章

相似问题

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