首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用一个django表单更新两个模型

如何使用一个django表单更新两个模型
EN

Stack Overflow用户
提问于 2020-02-27 07:52:08
回答 1查看 36关注 0票数 0

我面临着django表单的一个问题

这是我的模型:

代码语言:javascript
复制
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。

代码语言:javascript
复制
class UserProfileForm(forms.ModelForm):

    class Meta:
        model = UserProfile
        exclude = ['user']

如何从用户表中获取first_name、last_name并保存

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-02-27 08:14:23

只需将字段添加为表单中的,并使用属性获取数据并保存:

代码语言:javascript
复制
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 instance
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60428552

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档