[英]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.