我面临着django表单的一个问题
这是我的模型:
class User(models.Model):
email = models.EmailField(unique=True)
first_name = models.CharField(max_length=30)
last_name = models.CharField(max_length=30)
class UserProfile(AuditFields):
user = models.ForeignKey(User, on_delete=models.CASCADE)
designation = models.CharField(max_length=200, blank=True)
contact_number = models.CharField(max_length=20, blank=True)
team = models.CharField(max_length=200, blank=True)
manager = models.CharField(max_length=200, blank=True)
joining_date = models.DateField(default=datetime.now)我需要创建一个表单来编辑当前用户的配置文件详细信息。
这是我的表格。但是它是一个模型形式,所以只从用户配置文件表中获取detauls。
class UserProfileForm(forms.ModelForm):
class Meta:
model = UserProfile
exclude = ['user']如何从用户表中获取first_name、last_name并保存
发布于 2020-02-27 08:14:23
只需将字段添加为表单中的,并使用属性获取数据并保存:
class UserProfileForm(forms.ModelForm):
first_name = forms.CharField(max_length=30,required=True)
last_name = forms.CharField(max_length=30,required=True)
def __init__(self, *args, **kwargs):
super().__init__(*args, **kwargs)
if self.instance:
self.fields['first_name'].initial = self.instance.user.first_name
self.fields['last_name'].initial = self.instance.user.last_name
class Meta:
model = UserProfile
exclude = ['user']
def save(self, commit=False):
instance = super().save(commit=True)
user = instance.user
user.first_name = self.cleaned_data['first_name']
user.last_name = self.cleaned_data['last_name']
user.save()
return instancehttps://stackoverflow.com/questions/60428552
复制相似问题