AttributeError:“ ContactUs”对象没有属性“ model”

时间:2018-12-10 11:13:17

标签: python django attributeerror

任何人都可以帮助我,我尝试在python-django上创建联系表单,当我尝试在数据库上进行迁移时,我收到错误“ AttributeError:'ContactUs'对象没有属性'model'”

vievs.py

from django.shortcuts import render
from .forms import ContactForm, ContactUs
from django.core.mail import EmailMessage
from django.shortcuts import redirect
from django.template.loader import get_template


def contact(request):
    form_class = ContactForm

    # new logic!
    if request.method == 'POST':
        form = form_class(data=request.POST)

        if form.is_valid():
            first_name = request.POST.get('first_name', '')
            last_name = request.POST.get('last_name', '')
            date = request.POST.get('date', '')
            month = request.POST.get('month', '')
            year = request.POST.get('year', '')
            sender = request.POST.get('sender', '')
            message = request.POST.get('message', '')
            licence = request.POST.get('licence', '')
            phoneNumber = request.POST.get('phoneNumber', '')
            zipCode = request.POST.get('zipCode', '')
            cdlType = request.POST.get('cdlType', '')

            # Email the profile with the
            # contact information
            template = get_template('contact_template.txt')
            context = {
                'first_name': first_name,
                'last_name': last_name,
                'date': date,
                'month': month,
                'year': year,
                'sender': sender,
                'message': message,
                'licence': licence,
                'phoneNumber': phoneNumber,
                'zipCode': zipCode,
                'cdlType': cdlType,
            }

            content = template.render(context)

            email = EmailMessage(
            "New contact form submission",
            content,
            "Your website" + '',
            ['youremail@gmail.com'],
            headers={'Reply-To': sender}
            )
            email.send()
            return redirect('contact')

    return render(request, 'email.html', {
        'form': form_class,
    })


def contact_us(request):
    form_class = ContactUs

    # new logic!
    if request.method == 'POST':
        form = form_class(data=request.POST)

        if form.is_valid():
            first_name = request.POST.get('first_name', '')
            last_name = request.POST.get('last_name', '')
            sender = request.POST.get('sender', '')
            message = request.POST.get('message', '')
            phoneNumber = request.POST.get('phoneNumber', '')

            # Email the profile with the
            # contact information
            template = get_template('contact_us_template.txt')
            context = {
                'first_name': first_name,
                'last_name': last_name,
                'sender': sender,
                'message': message,
                'phoneNumber': phoneNumber,
            }

            content = template.render(context)

            email = EmailMessage(
                "New contact form submission",
                content,
                "Your website" + '',
                ['youremail@gmail.com'],
                headers={'Reply-To': sender}
            )
            email.send()
            return redirect('contact_us')

    return render(request, 'email2.html', {
        'form': form_class,
    })

models.py

from django.db import models


class Form(models.Model):
    first_name = models.CharField(max_length=100)
    last_name = models.CharField(max_length=100)
    date = models.DateTimeField()
    month = models.DateTimeField()
    year = models.DateTimeField()
    sender = models.EmailField()
    message = models.CharField()
    licence = models.CharField(max_length=100)
    zipCode = models.CharField(max_length=100)
    phoneNumber = models.CharField(max_length=100)
    cdlType = models.CharField(max_length=100)


class ContactUs(models.Model):
    first_name = models.CharField(max_length=100)
    last_name = models.CharField(max_length=100)
    sender = models.EmailField()
    message = models.CharField()
    phoneNumber = models.CharField(max_length=100)

forms.py

from django import forms


class ContactForm(forms.Form):
    first_name = forms.CharField(max_length=100, required=True)
    last_name = forms.CharField(max_length=100, required=True)
    date = forms.DateTimeField(required=True)
    month = forms.DateTimeField(required=True)
    year = forms.DateTimeField(required=True)
    sender = forms.EmailField(required=True)
    message = forms.CharField(required=True)
    licence = forms.CharField(max_length=100, required=True)
    zipCode = forms.CharField(max_length=100, required=True)
    phoneNumber = forms.CharField(max_length=100, required=True)
    cdlType = forms.CharField(max_length=100, required=True)


class ContactUs(forms.Form):
    first_name = forms.CharField(max_length=100, required=True)
    last_name = forms.CharField(max_length=100, required=True)
    sender = forms.EmailField(required=True)
    message = forms.CharField(required=True)
    phoneNumber = forms.CharField(max_length=100, required=True)

回溯

C:\Contact_Form\back>python manage.py makemigrations
Traceback (most recent call last):
  File "manage.py", line 22, in <module>
    execute_from_command_line(sys.argv)
  File "C:\Contact_Form\testenv\lib\site-packages\django\core\management\__init__.py", line 381, in execute_from_command_line
    utility.execute()
  File "C:\Contact_Form\testenv\lib\site-packages\django\core\management\__init__.py", line 375, in execute
    self.fetch_command(subcommand).run_from_argv(self.argv)
  File "C:\Contact_Form\testenv\lib\site-packages\django\core\management\base.py", line 316, in run_from_argv
    self.execute(*args, **cmd_options)
  File "C:\Contact_Form\testenv\lib\site-packages\django\core\management\base.py", line 350, in execute
    self.check()
  File "C:\Contact_Form\testenv\lib\site-packages\django\core\management\base.py", line 379, in check
    include_deployment_checks=include_deployment_checks,
  File "C:\Contact_Form\testenv\lib\site-packages\django\core\management\base.py", line 366, in _run_checks
    return checks.run_checks(**kwargs)
  File "C:\Contact_Form\testenv\lib\site-packages\django\core\checks\registry.py", line 71, in run_checks
    new_errors = check(app_configs=app_configs)
  File "C:\Contact_Form\testenv\lib\site-packages\django\contrib\admin\checks.py", line 26, in check_admin_app
    errors.extend(site.check(app_configs))
  File "C:\Contact_Form\testenv\lib\site-packages\django\contrib\admin\sites.py", line 81, in check
    if modeladmin.model._meta.app_config in app_configs:
AttributeError: 'ContactUs' object has no attribute 'model'

admin.py

from django.contrib import admin

from .models import Form, ContactUs


admin.site.register(Form, ContactUs)

开始时,我只是为了发送邮件而创建了联系表单,但后来我修改了它,因为我需要在站点管理员中显示数据。

2 个答案:

答案 0 :(得分:0)

from django.contrib import admin
from .models import Form, ContactUs
admin.site.register(Form, ContactUs)

将您的管理文件更改为此

from django.contrib import admin

from .models import Form, ContactUs

admin.site.register(Form)
admin.site.register(ContactUs)

答案 1 :(得分:0)

您可以将多个模型注册为列表

admin.site.register([Form, ContactUs])