【问题标题】:ModelForm has no model class specified. DjangoModelForm 没有指定模型类。姜戈
【发布时间】:2020-02-22 19:14:47
【问题描述】:

我想使用 Django 为我的系统创建一个患者创建表单,但它无法正常工作,并且出现错误:

/create/ ModelForm 处的 ValueError 没有指定模型类。

我无法理解。我寻找了类似的问题,并应用了一些解决方案,但没有奏效。我的错误在哪里?你能帮助我吗?非常感谢您的关注。

views.py

def patient_create(request):

    if not request.user.is_authenticated:
        return Http404()

    form = PatientForm(request.POST or None, request.FILES or None)
    if form.is_valid():
        post = form.save(commit=False)
        post.user = request.user
        post.save()
        messages.success(request, "Başarılı bir şekilde oluşturdunuz.", extra_tags='mesaj-basarili')
        return HttpResponseRedirect(post.get_absolute_url())

    context = {
        'form': form
    }

    return render(request, "template/patient_form.html", context)

models.py

class newPatients(models.Model):

title = models.CharField(max_length=100)
first_name = models.CharField(max_length=50)
last_name = models.CharField(max_length=50)
created_date = models.DateTimeField(default=timezone.now)
dept = models.TextField()
address = models.TextField()
phone = models.CharField(max_length=15)
notes = RichTextField(verbose_name="notes")

def publish(self):
    self.published_date = timezone.now()
    self.save()

def __str__(self):
    return self.title

def get_create_url(self):
    return reverse('post:create', kwargs={'slug': self.slug})

def get_unique_slug(self):
    slug = slugify(self.title.replace('ı', 'i'))
    unique_slug = slug
    counter = 1
    while newPatients.objects.filter(slug=unique_slug).exists():
        unique_slug = '{}-{}'.format(slug, counter)
        counter += 1
    return unique_slug

def save(self, *args, **kwargs):
    self.slug = self.get_unique_slug()
    return super(newPatients, self).save(*args, **kwargs)

class Meta:
    ordering = ['-created_date']

forms.py

from django.forms import ModelForm
from patients.models import newPatients


class PatientForm(ModelForm):
    model = newPatients
    fields = [
        'title',
        'first_name',
        'last_name',
        'dept',
        'address',
        'phone',
        'notes',
    ]

追溯

Environment:


Request Method: GET
Request URL: http://127.0.0.1:8000/create/

Django Version: 2.2.9
Python Version: 3.7.0
Installed Applications:
['django.contrib.admin',
 'django.contrib.auth',
 'django.contrib.contenttypes',
 'django.contrib.sessions',
 'django.contrib.messages',
 'django.contrib.staticfiles',
 'users',
 'patients',
 'widget_tweaks',
 'crispy_forms',
 'ckeditor']
Installed Middleware:
['django.middleware.security.SecurityMiddleware',
 'django.contrib.sessions.middleware.SessionMiddleware',
 'django.middleware.common.CommonMiddleware',
 'django.middleware.csrf.CsrfViewMiddleware',
 'django.contrib.auth.middleware.AuthenticationMiddleware',
 'django.contrib.messages.middleware.MessageMiddleware',
 'django.middleware.clickjacking.XFrameOptionsMiddleware']



Traceback:

File "C:\Users\edeni\senior\myenv\lib\site-packages\django\core\handlers\exception.py" in inner
  34.             response = get_response(request)

File "C:\Users\edeni\senior\myenv\lib\site-packages\django\core\handlers\base.py" in _get_response
  115.                 response = self.process_exception_by_middleware(e, request)

File "C:\Users\edeni\senior\myenv\lib\site-packages\django\core\handlers\base.py" in _get_response
  113.                 response = wrapped_callback(request, *callback_args, **callback_kwargs)

File "C:\Users\edeni\senior\pharsys\patients\views.py" in patient_create
  25.     form = PatientForm(request.POST or None, request.FILES or None)

File "C:\Users\edeni\senior\myenv\lib\site-packages\django\forms\models.py" in __init__
  285.             raise ValueError('ModelForm has no model class specified.')

Exception Type: ValueError at /create/
Exception Value: ModelForm has no model class specified.

【问题讨论】:

    标签: python django


    【解决方案1】:

    PatientForm 中缺少 Meta

    class PatientForm(ModelForm):
        class Meta:
            model = newPatients
            fields = [
                'title',
                'first_name',
                'last_name',
                'dept',
                'address',
                'phone',
                'notes',
        ]
    

    【讨论】:

      猜你喜欢
      • 2014-05-18
      • 2012-02-19
      • 2017-01-02
      • 1970-01-01
      • 2013-11-22
      • 1970-01-01
      • 2020-11-24
      • 2021-02-23
      • 1970-01-01
      相关资源
      最近更新 更多