Ошибка при попытке соединить Model с ModelForm в Django
Я изучаю Django и пытаюсь сделать форму запроса для заполнения с помощью Django и базы данных MySQL, и я сталкиваюсь с проблемами, пытаясь подключить models.py к forms.py, создавая ModelForm с базой данных и таблицей, которые я уже создал. Возвращается вот такая ошибка
(envworld) C:\Seen\Documents\envworld\myweb>python manage.py makemigrations
Traceback (most recent call last):
File "C:\Seen\Documents\envworld\myweb\manage.py", line 22, in <module>
main()
File "C:\Seen\Documents\envworld\myweb\manage.py", line 18, in main
execute_from_command_line(sys.argv)
File "C:\Seen\Documents\envworld\lib\site-packages\django\core\management\__init__.py", line 446, in execute_from_command_line
utility.execute()
File "C:\Seen\Documents\envworld\lib\site-packages\django\core\management\__init__.py", line 420, in execute
django.setup()
File "C:\Seen\Documents\envworld\lib\site-packages\django\__init__.py", line 24, in setup
apps.populate(settings.INSTALLED_APPS)
File "C:\Seen\Documents\envworld\lib\site-packages\django\apps\registry.py", line 124, in populate
app_config.ready()
File "C:\Seen\Documents\envworld\lib\site-packages\django\contrib\admin\apps.py", line 27, in ready
self.module.autodiscover()
File "C:\Seen\Documents\envworld\lib\site-packages\django\contrib\admin\__init__.py", line 50, in autodiscover
autodiscover_modules("admin", register_to=site)
File "C:\Seen\Documents\envworld\lib\site-packages\django\utils\module_loading.py", line 58, in autodiscover_modules
import_module("%s.%s" % (app_config.name, module_to_search))
File "C:\Program Files\WindowsApps\PythonSoftwareFoundation.Python.3.10_3.10.2544.0_x64__qbz5n2kfra8p0\lib\importlib\__init__.py", line 126, in import_module
return _bootstrap._gcd_import(name[level:], package, level)
File "<frozen importlib._bootstrap>", line 1050, in _gcd_import
File "<frozen importlib._bootstrap>", line 1027, in _find_and_load
File "<frozen importlib._bootstrap>", line 1006, in _find_and_load_unlocked
File "<frozen importlib._bootstrap>", line 688, in _load_unlocked
File "<frozen importlib._bootstrap_external>", line 883, in exec_module
File "<frozen importlib._bootstrap>", line 241, in _call_with_frames_removed
File "C:\Seen\Documents\envworld\myweb\formsite\admin.py", line 2, in <module>
from .forms import RequestForm
File "C:\Seen\Documents\envworld\myweb\formsite\forms.py", line 12, in <module>
request = Request_Form.objects.get(pk=1)
File "C:\Seen\Documents\envworld\lib\site-packages\django\db\models\manager.py", line 85, in manager_method
return getattr(self.get_queryset(), name)(*args, **kwargs)
File "C:\Seen\Documents\envworld\lib\site-packages\django\db\models\query.py", line 650, in get
raise self.model.DoesNotExist(
formsite.models.Request_Form.DoesNotExist: Request_Form matching query does not exist.
здесь же находится каталог файлов для проекта Django и приложения
Я предполагаю, что проблема в Request_Form.objects.get(pk=1), так как я определил первичный ключ, а django автоматически создает поле/столбец, если он не объявлен через AutoField(), но я также заранее спрашиваю, есть ли какие-либо проблемы с кодом
вот код и то, что я сделал
models.py
from django.db import models
class Request_Form (models.Model):
No_Permintaan = models.IntegerField(primary_key=True)
Nama_Aplikasi = models.CharField(max_length=30)
Departemen = models.CharField(max_length=50)
Description = models.TextField(max_length=2000)
TanggalReq = models.DateTimeField
Nama_Atasan = models.CharField(max_length=30, unique=True)
def __str__(self):
return self.Nama_Aplikasi
class Serah_Terima (models.Model):
Kode_Permintaan = models.ForeignKey(Request_Form, on_delete=models.CASCADE)
TanggalApproval = models.DateField
Atasan = models.ForeignKey(Request_Form, on_delete=models.CASCADE,to_field='Nama_Atasan' ,related_name='Kode_Permintaan')
Comment = models.TextField
def __str__(self):
return self.name
forms.py
from django.db import models
from django.forms import ModelForm
from formsite.models import Request_Form
from formsite.models import Serah_Terima
class RequestForm(ModelForm):
class Meta:
model = Request_Form
fields = ['Nama_Aplikasi', 'Departemen', 'Description', 'Nama_Atasan']
form = RequestForm()
request = Request_Form.objects.get(pk=1)
form = RequestForm(instance=request)
""""
class SerahTerima(ModelForm):
class Meta:
model = Serah_Terima
fields = ['Tanggal_Approval','Nama_Atasan','Comment']
form = SerahTerima()
serah = SerahTerima.objects.get(pk=1)
form = SerahTerima(instance=request)
"""
Я закомментировал часть формы Serah_Terima, так как я все еще тестирую модель Request_Form, но вот остальная часть кода
views.py
from django.shortcuts import render
from django.http import HttpResponse
from django.http import HttpResponseRedirect
from .forms import RequestForm
def welcome(request):
return HttpResponse("Welcome to the Home Page")
def formpage(request):
submitted = False
if request.method == 'POST':
form= RequestForm(request.POST)
if form.is_valid():
form.save()
return HttpResponseRedirect('myweb/formpage?submitted=True')
else:
form = RequestForm
if 'submitted' in request.GET:
submitted = True
return render(request, 'myweb/formpage.html', {'form':form,'submitted':submitted})
urls.py myweb/formsite/urls.py
from django.urls import path
from formsite import views
urlpatterns = [
path('form/', views.formpage, name = 'formpage'),
path('', views.welcome, name='welcome'),
]
urls.py myweb/urls.py
from django.contrib import admin
from django.urls import path
from formsite import views
urlpatterns = [
path('', views.welcome, name='home'),
path('form/', views.formpage, name = 'formpage'),
path('admin/', admin.site.urls),
]
и затем html-коды на всякий случай
formpage.html
{% {% extends 'base.html' %}%}
<h2>For App Request </h2>
<hr>
{%if submitted%}
Data is Submitted
{% else %}
<form-action="",method="post">
{% csrf_token %}
{{ form.as_p }}
<inpu>
<input type="Submit" value="Submit">
</form>
{% endif %}
base.html
<!DOCTYPE !html>
<html lang="en">
<head>
<link rel="stylesheet" href="style.css">`
<title>Form Login Page</title>
</head>
<body>
<div id="sidebar">
<ul>
<li><a href="/myweb">Home</a></li>
<li><a href="myweb/formpage">formpage</a></li>
</ul>
</div>
</body>
</html>
ваш файл forms.py должен выглядеть следующим образом
from django import forms
from formsite.models import Request_Form
from formsite.models import Serah_Terima
class RequestForm(forms.ModelForm):
class Meta:
model = Request_form
fields = ['Nama_Aplikasi', 'Departemen', 'Description', 'Nama_Atasan']
Этот ниже должен быть в вашем views.py
form = RequestForm()
request = Request_Form.objects.get(pk=1)
form = RequestForm(instance=request)