django - 我无法更新表单集
问题描述
我无法使用内联表单进行更新。以前我以为可以,但不是。我正在尝试解决它,但它不起作用。我补充说。我将发布任何其他必要的项目。 “Id 此字段为必填项。用户此用户的个人资料已存在。” 我收到错误消息。
#view
class UserEdit(generic.UpdateView):
model = User
form_class = forms.UserUpdateForm
template_name = 'accounts/accounts_edit.html'
success_url = reverse_lazy('person:myaccount')
def get_object(self):
return get_object_or_404(User, pk=self.request.user.user_id)
#model
class User(AbstractBaseUser, PermissionsMixin):
username_validator = UnicodeUsernameValidator()
user_id = models.UUIDField(default=uuid_lib.uuid4,
primary_key=True, editable=False)
username = models.CharField(_('username'), unique=True, max_length=50,validators=[username_validator],error_messages={
'unique': _("A user with that username already exists."),
},)
class profile(models.Model):
image = models.ImageField(upload_to='profile/',default='profile/default.jpg')
first_name = models.CharField(_('first name'), max_length=30, blank=True,null=True)
last_name = models.CharField(_('last name'), max_length=150, blank=True,null=True)
birthday = models.DateField(_('birthday',),null=True)
user = models.OneToOneField(settings.AUTH_USER_MODEL, on_delete=models.CASCADE,)
#form
class ProfileUpdateForm(BaseModelForm):
class Meta:
model = profile
fields = ('first_name','last_name','birthday',)
ProfileFormSet = inlineformset_factory(User,profile,form=ProfileUpdateForm,extra=0)
class UserUpdateForm(mixins.ModelFormWithFormSetMixin,BaseModelForm):
formset_class = ProfileFormSet
class Meta:
model = User
fields = ('username','email',)
#mixin
class ModelFormWithFormSetMixin:
def __init__(self, *args, **kwargs):
super(ModelFormWithFormSetMixin, self).__init__(*args, **kwargs)
self.formset = self.formset_class(
instance=self.instance,
data=self.data if self.is_bound else None,
)
def is_valid(self):
return super(ModelFormWithFormSetMixin, self).is_valid() and self.formset.is_valid()
def save(self, commit=True):
saved_instance = super(ModelFormWithFormSetMixin, self).save(commit)
self.formset.save(commit)
return saved_instance
解决方案
推荐阅读
- excel-formula - 获取 Excel 表中所有匹配项的行列坐标
- java - 获取rabbitmq消息的body部分
- angular - Angular 7.0.1 中的 Web Worker 设置
- java - 动态 Web 项目中的 JDBC 驱动程序问题
- python - 如何从熊猫的时间序列数据中获取斜率?
- java - java上的随机几何形状的数组任务
- apache-spark-sql - 如何通过启用 HiveSupport 在 windows10 上本地运行 spark-sql 程序时修复异常?
- python - 字典列表中的列表理解
- risc - RISC - 禁止指令序列
- autodesk-forge - Autodesk Forge 检索/更新自定义属性