不使用ID字段将列表保存到manytomany字段

时间:2013-07-09 08:12:39

标签: 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):
        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() 

但是这种方法不起作用。我需要做些什么来解决它?

1 个答案:

答案 0 :(得分:1)

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

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