Django 不使用ID字段将列表保存到多个字段

Django 不使用ID字段将列表保存到多个字段,django,django-models,manytomanyfield,Django,Django Models,Manytomanyfield,我试图将列表保存到manyToManyfield,但我需要使用对象ID旁边的另一个字段。我希望它与名为extid 这是我的模型: class Used_benefit(models.Model): name = models.CharField(max_length=255) extid = models.PositiveIntegerField(verbose_name="External ID") def __unicode__(self): ret

我试图将列表保存到manyToManyfield,但我需要使用对象ID旁边的另一个字段。我希望它与名为
extid

这是我的模型:

class Used_benefit(models.Model):
    name = models.CharField(max_length=255)
    extid = models.PositiveIntegerField(verbose_name="External ID")

    def __unicode__(self):
        return self.name


class UserProfile(AbstractUser):
    benefits = models.ManyToManyField(Used_benefit, blank=True, null=True, related_name="benefits_used")
    updated = models.DateTimeField(blank=True, null=True)    

    objects = UserManager()   
以下是我如何尝试保存对象:

webuser = UserProfile.objects.get(username__exact=user_id)
productlist = soup.personrecord.productlist.string #The list looks like this: 1,2,6


if productlist:
    webuser.benefits.add(benefits__extid=productlist)


webuser.save() 
但这种方法不起作用。我需要做什么来修复它

if productlist:
    productlist = productlist.split(",")
    webuser.benefits.add(*Used_benefit.objects.filter(extid__in=productlist))

您不需要
webuser.save()
,除非您正在对webuser对象进行其他更改。

太好了!非常感谢。如果productlist,我不应该在
之后拆分列表吗?不确定如果productlist为空或丢失会发生什么情况?是的,您是对的,如果productlist
,请在
之后拆分它。如果拆分空字符串,将得到
['']
。另请注意,我添加了
*
来扩展
添加
参数,非常好!再次感谢你。