使用循环在Django模型中使用save函数和管理员保存按钮保存多个数据
使用循环在Django模型中使用save函数和管理员保存按钮保存多个数据
我试图在Django admin中的循环中保存数据。当我按下时,它应该保存在数据库中,并带有相同的参数,除了一个字段,在每一行中该字段的值都不同。
class DealersList(models.Model): dealers_company = models.CharField(unique=True,max_length=100) concern_district = models.CharField(max_length=25, choices=CITY_CHOICES, default=False) address = models.CharField(max_length=50) vdc = models.CharField(max_length=30) contact_person = models.CharField(max_length=50,blank=True) phone_number = models.CharField(max_length=14,blank=True) email = models.EmailField(max_length=70,blank=True, null= True, unique= True) class SimDetail(models.Model): mobile_no = models.BigIntegerField("Mobile Number",unique=True) number_of_sim = models.IntegerField() agent = models.ForeignKey('DealersList',on_delete=models.CASCADE,to_field='dealers_company') sim_activation_date = models.DateField(auto_now=False, auto_now_add=False) submission_date = models.DateField(auto_now=False, auto_now_add=False) remarks = models.TextField(null=True,blank=True,validators=[MaxLengthValidator(200)]) def save(self,*args, **kwargs): ite=0 for x in xrange(0,self.number_of_sim): self.mobile_no=self.mobile_no+ite ite=1 super(SimDetail, self).save(*args, **kwargs)
目前它只保存最后一个数据,我认为(我可能错了),它可能会一次又一次地被替换,所以最后只存储最后一个值。
有人可以帮我吗?我正在尝试仅从管理员处使用它,而不使用表单。
在Django模型中使用循环保存多个数据是一个常见的需求。然而,有时候在使用save函数和管理员保存按钮时会出现问题。下面是一个遇到这个问题的用户的回答:
问题的原因是,用户想要在每次保存时创建一个新的对象,而不是更新现有的对象。为了解决这个问题,用户在一个Stack Overflow的链接中找到了答案。链接的内容说明,只需将主键设置为None,就可以在每次保存时创建一个新的对象。
解决方法:
# 在保存之前将主键设置为None def save(self, *args, **kwargs): self.pk = None super().save(*args, **kwargs)
这个解决方法很简单,只需要在保存之前将主键设置为None即可。通过这样做,每次使用save函数保存对象时,都会创建一个新的对象。
在Django模型中使用循环保存多个数据时,可能会遇到问题。为了解决这个问题,只需在保存之前将主键设置为None即可。这样每次保存时都会创建一个新的对象。