Сохранить список во множество полей, не используя поле ID
Я пытаюсь сохранить список в поле manyToMany, но мне нужно использовать другое поле рядом с идентификатором объекта. Я хочу, чтобы список совпадал с полем 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 ответ
Решение
if productlist:
productlist = productlist.split(",")
webuser.benefits.add(*Used_benefit.objects.filter(extid__in=productlist))
Вам не нужно webuser.save()
если вы не вносите другие изменения в объект веб-пользователя.