从我的Profile模型到我的Skills模型,我有一个多到多的关系。如果我试图清除并向配置文件中添加新技能,就会得到invalid literal for int() with base 10: 'Python' (Python是处理的第一项技能)。
我不知道该怎么做,因为我100%肯定是将模型实例传递给user.profile.skills.add()。
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)发布于 2016-02-12 20:54:43
不应该向user.profile.skills添加字符串列表,应该添加Skill对象列表。
换句话说,使用skills_to_add而不是skills
发布于 2016-02-12 20:46:11
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
...
skills = models.ManyToManyField(Skill,...)
...https://stackoverflow.com/questions/35371597
复制相似问题