【问题标题】:Add additional data when django form is saved保存 django 表单时添加其他数据
【发布时间】:2020-07-08 08:44:45
【问题描述】:

我正在为我的第一个 django 应用程序寻求帮助,我是编程新手。我有以下情况:

型号:

class save_table(models.Model):
   name=models.CharField(max_length=100)
   UniqueuserID = models.CharField(max_length=7)
   UserLocation = models.CharField(max_length=100)
   UserLead = models.CharField(max_length=50)

   def __str__(Self):
      return self.UniqueuserID

class data_table(models.Model):
   UniqueuserID = models.CharField(max_length=7)
   name=models.CharField(max_length=100)
   UserLocation = models.CharField(max_length=100)
   UserLead = models.CharField(max_length=50)

表格:

class save_table_form(forms.ModelForm):
   
   class Meta:
      model = save_table
      fields = ('UniqueuserID')

   def __init__(self,*args,**kwargs):
      super(save_table_form,self).__init__(*args,**kwargs)

用户将添加到表单中的每个用户 ID 在第二个模型中都有一个相应的数据条目,我想将这些附加数据与表单一起保存。但是我没有使用外键,因为我不希望 save_table 中保存的模型数据根据 data_table 中的更改而更改。我可以在保存表单之前将附加数据添加到表单中吗?

if form.is_valid():
   form.save()

请帮忙..

【问题讨论】:

  • 可能更好的选择是在更新save_table 之后使用post_save 信号更新data_table。或者您可以改写模型save 方法。
  • 你能帮忙分享一些如何做到这一点的示例语法吗..

标签: django django-forms


【解决方案1】:

是的,您可以在保存表单时添加其他数据! 覆盖类 save_table_form 中的保存方法: 像这样:

class save_table_form(forms.ModelForm):
    def save(self, commit=True):
        user_id = self.cleaned_data['id']
        user_photo = self.cleaned_data['photo']
        user_password = self.cleaned_data['password1']
        user = SysUser.objects.get(pk=user_id)
        user.username = self.cleaned_data['username']
        if user_password:
            user.set_password(self.cleaned_data['password1'])
        user.first_name = self.cleaned_data['first_name']
        user.mobile = self.cleaned_data['mobile']
        user.office_id = self.cleaned_data['office_id']
        if user_photo:
            user.image = user_photo
        user.save()
        user.user_permissions.clear()
        user.user_permissions.add(*self.cleaned_data['user_permissions'])
        print('data is saving')
        return user

【讨论】:

  • 谢谢,ehsan .. 你能告诉我在我的情况下应该是什么用户吗?谢谢
  • 我对您的架构感到困惑!首先使用一个简单的模型示例,然后处理您的案例; Karthik 可视化
猜你喜欢
  • 2012-12-16
  • 2017-12-26
  • 2019-04-17
  • 2019-12-05
  • 2017-06-01
  • 1970-01-01
  • 2014-07-06
  • 2014-11-19
  • 1970-01-01
相关资源
最近更新 更多