【问题标题】:Django Admin not allowing to enter data to tableDjango Admin 不允许向表中输入数据
【发布时间】:2021-05-21 07:38:52
【问题描述】:

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

admin.py

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

# Register your models here.

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

views.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})

forms.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 管理 UI 插入数据:

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

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

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

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

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

有谁知道原因

【问题讨论】:

    标签: python django file-upload filefield


    【解决方案1】:

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

    首先进行迁移:python manage.py makemigrations,然后使用此命令应用这些迁移:python manage.py migrate

    【讨论】:

    • 我可以知道在 django UI 中显示的是表名吗,应该和代码中的表名相同,还是有任何其他表名,因为当我将上传文件作为模型名时,在 django 管理 UI 中显示为上传文件
    • @AuroraEugene try python manage.py makemigrations <appname> 这会产生任何迁移吗?注意:将<appname> 替换为您的应用名称。
    • migration is fdone ,它在 Django admin 中更改了我的表名,但我不知道为什么仍然出现该错误,它说 table salesforceticket not found ,还有一件事是添加了一个额外的 's'在迁移期间到实例
    • 所以在进行迁移后,当我检查登录迁移时,它会将表名显示为 salesforceticket,但是当我运行 django admin 时,它说没有表名 salesforceticket
    猜你喜欢
    • 2016-03-12
    • 2019-03-15
    • 1970-01-01
    • 2021-11-20
    • 2015-07-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多