首页 > 解决方案 > Django Admin 不允许向表中输入数据

问题描述

所以我在我的项目中使用 django admin,在我的项目开发过程中我已经有一些列,随着时间的推移,列从 2 减少到 1,列名也发生了变化。所以我对代码进行了更改,但我无法写信给 django admin。inn django 管理 UI 或在 django 代码中。它说桌子不存在

管理员.py

from django.contrib import admin
from .models import SalesforceTicket, UploadedFiles

# Register your models here.

admin.site.register(SalesforceTicket)
admin.site.register(UploadedFiles)

视图.py

def files(request):
    num_of_files = 1
    filled_multi_file_form = MultipleForm(request.GET)
    if filled_multi_file_form.is_valid():
        num_of_files = filled_multi_file_form.cleaned_data['num_of_files']

    FilesFormSet = formset_factory(FilesForm, extra=num_of_files)
    formset = FilesFormSet()

    if request.method == 'POST':
        filled_form = SnippetForm(request.POST, request.FILES)
        filled_formset = FilesFormSet(request.POST, request.FILES)
        if filled_form.is_valid() and filled_formset.is_valid():
            
            SalesforceTicket = filled_form.save(commit=False)
            SalesforceTicket.save()
           
            SalesforceNumber = filled_form.cleaned_data['SalesforceNumber']
           

            for form in filled_formset:
                data = form.save(commit=False)
                data.SalesforceTicket = SalesforceTicket
                data.save()
                file = form.cleaned_data['files_to_upload']
                path = form.cleaned_data['path']
                server = form.cleaned_data['server']
                         
                note = 'File Uploaded Successfully !!'
                filled_form = SnippetForm()
                filled_formset = FilesFormSet()

        else:
            note = 'Please try again!'


        return render(request, 'myforms/files.html',
                      {'note': note, 'SnippetForm': filled_form, 'formset': filled_formset})
    else:
        form1 = SnippetForm()
        filled_formset = FilesFormSet()
        return render(request, 'myforms/files.html', {'SnippetForm': form1, 'formset': filled_formset})

表格.py

from django import forms
from .models import SalesforceTicket, UploadedFiles
from django.core.exceptions import ValidationError
from django.utils.translation import ugettext_lazy as _
import os, pathlib
import logging


class SnippetForm(forms.ModelForm):
    class Meta:
        model = SalesforceTicket
        fields = ['SalesforceNumber']


class FilesForm(forms.ModelForm):
    class Meta:
        model = UploadedFiles
        fields = ['files_to_upload', 'path', 'server']
    def clean(self): 
        cleaned_data = super(FilesForm, self).clean()
        #files_to_upload = cleaned_data.get("files_to_upload")
        path = cleaned_data.get("path")
        server = cleaned_data.get("server")
        new_path = path.replace(':', '$', 1)
        # print(new_path)
        mode = 0o666
        for s in server:
            s = r'\\' + s
            unc_path = os.path.join(s, new_path)
            print("hello"+unc_path)
            #unc_path = os.mkdir(unc_path, mode)
        isdir = os.path.isdir(unc_path)

        if isdir:
            print("ok")
        else:
            unc_path = os.mkdir(unc_path, mode)
        return cleaned_data


class MultipleForm(forms.Form):
    num_of_files = forms.IntegerField(min_value=1, max_value=10)

我在上传到文件时出错,实际上不是上传:问题已经发布在 Stack 上,不知道 django admin 是否是导致该问题的问题。

所以我尝试使用 django admin UI 插入数据:

django 管理员

所以我收到这个错误:'= 错误

链接到我之前的问题:Django file not upload using FileField(upload to=)

所以我在 migrate 和 runserver 之后应用了 makemigration 并尝试添加到 django salesforce 模型表中。

所以这里是生成的迁移日志: 迁移日志

这是我尝试将数据添加到 db 表时出现的错误尝试将内容添加到 db 表后

所以有人知道原因吗

标签: pythondjangofile-uploadfilefield

解决方案


当您在新创建的表之后没有进行迁移时,通常会出现此错误 - 在您的情况下,表是SalesforceTicket

首先将迁移设为:python manage.py makemigrations,然后使用以下命令应用这些迁移:python manage.py migrate


推荐阅读