user5443928
user5443928

Reputation:

Getting error while migrating the models using Django and python

I need one help. I am getting the below error while migrating the model file using Python and Django. I am explaining the errors below.

     Traceback (most recent call last):
  File "manage.py", line 22, in <module>
    execute_from_command_line(sys.argv)
  File "/usr/local/lib/python2.7/dist-packages/django/core/management/__init__.py", line 363, in execute_from_command_line
    utility.execute()
  File "/usr/local/lib/python2.7/dist-packages/django/core/management/__init__.py", line 355, in execute
    self.fetch_command(subcommand).run_from_argv(self.argv)
  File "/usr/local/lib/python2.7/dist-packages/django/core/management/base.py", line 283, in run_from_argv
    self.execute(*args, **cmd_options)
  File "/usr/local/lib/python2.7/dist-packages/django/core/management/base.py", line 327, in execute
    self.check()
  File "/usr/local/lib/python2.7/dist-packages/django/core/management/base.py", line 359, in check
    include_deployment_checks=include_deployment_checks,
  File "/usr/local/lib/python2.7/dist-packages/django/core/management/commands/migrate.py", line 62, in _run_checks
    issues.extend(super(Command, self)._run_checks(**kwargs))
  File "/usr/local/lib/python2.7/dist-packages/django/core/management/base.py", line 346, in _run_checks
    return checks.run_checks(**kwargs)
  File "/usr/local/lib/python2.7/dist-packages/django/core/checks/registry.py", line 81, in run_checks
    new_errors = check(app_configs=app_configs)
  File "/usr/local/lib/python2.7/dist-packages/django/core/checks/urls.py", line 16, in check_url_config
    return check_resolver(resolver)
  File "/usr/local/lib/python2.7/dist-packages/django/core/checks/urls.py", line 26, in check_resolver
    return check_method()
  File "/usr/local/lib/python2.7/dist-packages/django/urls/resolvers.py", line 254, in check
    for pattern in self.url_patterns:
  File "/usr/local/lib/python2.7/dist-packages/django/utils/functional.py", line 35, in __get__
    res = instance.__dict__[self.name] = self.func(instance)
  File "/usr/local/lib/python2.7/dist-packages/django/urls/resolvers.py", line 405, in url_patterns
    patterns = getattr(self.urlconf_module, "urlpatterns", self.urlconf_module)
  File "/usr/local/lib/python2.7/dist-packages/django/utils/functional.py", line 35, in __get__
    res = instance.__dict__[self.name] = self.func(instance)
  File "/usr/local/lib/python2.7/dist-packages/django/urls/resolvers.py", line 398, in urlconf_module
    return import_module(self.urlconf_name)
  File "/usr/lib/python2.7/importlib/__init__.py", line 37, in import_module
    __import__(name)
  File "/opt/lampp/htdocs/carClinic/carClinic/urls.py", line 7, in <module>
    url(r'^admin/', admin.site.urls),
  File "/usr/local/lib/python2.7/dist-packages/django/contrib/admin/sites.py", line 280, in urls
    return self.get_urls(), 'admin', self.name
  File "/usr/local/lib/python2.7/dist-packages/django/contrib/admin/sites.py", line 264, in get_urls
    url(r'^%s/%s/' % (model._meta.app_label, model._meta.model_name), include(model_admin.urls)),
AttributeError: 'Personal' object has no attribute 'urls'

I am explaining my code below.

models.py:

from __future__ import unicode_literals

from django.db import models
from django.contrib import admin
from datetime import datetime

class Service(models.Model):
    """In this class the columns for service table has declared"""
    cname = models.CharField(max_length=200)
    date_of_service = models.DateTimeField(default=datetime.now, blank=True)
    vechile_no = models.CharField(max_length=200)
    service_type = models.CharField(max_length=200)

class Personal(models.Model):
    """In this class the columns for Person table has declared"""
    name = models.CharField(max_length=200)
    address = models.CharField(max_length=200)
    phone = models.CharField(max_length=15)
    driving_license = models.CharField(max_length=200)
    email = models.CharField(max_length=200)
    date = models.DateTimeField(default=datetime.now, blank=True)

admin.site.register(Service, Personal)

urls.py:

from django.conf.urls import url, include
from django.contrib import admin
admin.autodiscover()

urlpatterns = [
    url(r'^admin/', admin.site.urls),
]

Here I need to display both classes inside admin panels. Please help me to resolve this issue.

Upvotes: 1

Views: 313

Answers (1)

e4c5
e4c5

Reputation: 53734

This is the problem:

admin.site.register(Service, Personal)

The second parameter to the above call should be a ModelAdmin subclass but you are passing the Personal model instead. Which naturally does not have the urls property.

Reference:

AdminSite.register(model_or_iterable, admin_class=None, **options)
Registers the given model class (or iterable of classes) with the given admin_class. admin_class defaults to ModelAdmin

Code like this should anyway be placed in admin.py according to convention rather than models.py and it should look like

admin.site.register(Personal)
admin.site.register(Service)

If you wanted to use your own custom ModelAdmin

class ServiceAdmin(admin.ModelAdmin):
    list_fields = ['cname','date_of_service']

admin.site.register(Service, ServiceAdmin)

Upvotes: 1

Related Questions