繁体   English   中英

如何在python中的for循环中创建对象?

[英]How can I create objects in a for-loop in python?

我试图通过python中的for循环在数据库中创建一些对象,但是当我尝试时,它只会插入最后一个对象。

这是我的代码,其中“ langssplit”是一个列表,是分割字符串(如“ 2-3”(表中语言行的pk))的结果。 我需要为列表中的每个元素创建一个对象并将其插入数据库,但是它只保存最后一个。 newprofile是我已经创建的对象。

langsparam = request.GET.get('langs', '')
langssplit = langsparam.split('-')
for lan in langssplit:
        lang = Languages.objects.filter(pk=lan).first()
        newprofilelan = ProfilesLanguages(profile=newprofile, language=lang)
        newprofilelan.save()

我究竟做错了什么?

谢谢你的帮助!

用模型更新

class Profiles(models.Model):
    alias = models.CharField(max_length=40)
    mail = models.CharField(max_length=255)
    mainimg = models.ForeignKey(Multimedia, models.DO_NOTHING)
    birthdate = models.DateTimeField(blank=True, null=True)
    country = models.CharField(max_length=30, blank=True, null=True)
    password = models.CharField(max_length=255)
    terms = models.IntegerField(blank=True, null=True)
    device_token = models.CharField(max_length=500)

    class Meta:
        managed = False
        db_table = 'profiles'

class Languages(models.Model):
    name = models.CharField(max_length=30)

    def natural_key(self):
        return (self.pk, self.name)

    class Meta:
        managed = False
        db_table = 'languages'

class ProfilesLanguages(models.Model):
    profile = models.ForeignKey(Profiles, models.DO_NOTHING, primary_key=True)
    language = models.ForeignKey(Languages, models.DO_NOTHING)

    class Meta:
        managed = False
        db_table = 'profiles_languages'
        unique_together = (('profile', 'language'),)

我认为您需要force_insert=True

newprofilelan.save(force_insert=True)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM