动态地向Django模型添加字段&迁移并返回Temp

2024-09-27 00:21:55 发布

您现在位置:Python中文网/ 问答频道 /正文

我希望超级用户或代理能够在从用户收集数据的过程中随时向用户配置文件添加字段。你知道吗

例如,代理将通过frontend单击addnewfield按钮,链接将自动创建字段,添加到'Profile'模型,并通过django South进行迁移。现在我尝试通过inlineformset工厂添加额外的字段来实现这一点。你知道吗

问题是没有在数据库中创建字段,因此保存字段中输入的数据也不起作用。你知道吗

我有'配置文件'模型的用户详细信息和'用户窗体'的详细信息有关的用户模型。你知道吗

下面是我的形式和观点

class BaseProfileEditInlineFormSet(BaseInlineFormSet):
    def add_fields(self, form, index):
        super().add_fields(form, index)
        form.fields['more_field'] = forms.CharField()
        form.fields['more_field'] = forms.CharField()

视图

@login_required
def edit_user_profile(request, pk):
    userpro = CustomUser.objects.get(pk=pk)
    user_form = UserForm(instance=userpro)

    ProfileInlineFormset = inlineformset_factory(CustomUser, Profile, exclude=['user','pub_date','modified_date','basic_verification','phone_confirmed'],formset=BaseProfileEditInlineFormSet, max_num=1, can_delete=False)
    formset = ProfileInlineFormset(instance=userpro)

    if request.user.is_authenticated and request.user.id == userpro.id:
        if request.method == "POST":
            user_form = UserForm(request.POST, request.FILES, instance=userpro)
            formset = ProfileInlineFormset(request.POST, request.FILES, instance=userpro)

            if user_form.is_valid():
                created_user = user_form.save(commit=False)
                formset = ProfileInlineFormset(request.POST, request.FILES, instance=userpro)

                if formset.is_valid():
                    created_user.save()
                    formset.save()
                    return HttpResponse('saved data')
        return render(request, 'accounts/account_update.html', {'pk':pk, 'user_form': user_form, 'formset':formset,})
    else:
        raise PermissionDenied

我错过了什么?你知道吗

另外,由于生产环境中的迁移与本地服务器中的迁移不同,您认为这是一个好主意吗?或者,最好在模型中定义字段,而不是添加此功能。我需要启迪。你知道吗


Tags: instance用户模型formfieldsifisrequest

热门问题