2016-11-27 2 views
1

Ich habe App mein Modell für meine Helden gerade fertig geschrieben out:Django Attribute: ‚Alias‘ Objekt hat kein Attribut ‚Urls‘

Hier ist meine models.py Datei für meine Helden App:

von django.db Importmodelle

# Create your models here. 
class Hero(models.Model): 
    codename = models.CharField(max_length = 30) 
    profilePic = models.ImageField(blank=True) #blank makes this optional 

    def __str__(self): 
     return (self.codename) 

class Stats(models.Model): 
    heroID = models.ForeignKey('Hero') 
    height = models.CharField(max_length = 10) 
    weight = models.CharField(max_length = 10) 
    STATS_CHOICES = (
    ('1', 'Extremely Low'), 
    ('2', 'Very Low'), 
    ('3', 'Low'), 
    ('4', 'Average'), 
    ('5', 'Good'), 
    ('6', 'Above Average'), 
    ('7', 'High'), 
    ('8', 'Very High'), 
    ('9', 'Super Human'), 
    ('10', 'Above and Beyond')) 
    powers = models.CharField(max_length = 5, choices = STATS_CHOICES) 
    intelligence = models.CharField(max_length = 5, choices = STATS_CHOICES) 
    durability = models.CharField(max_length = 5, choices = STATS_CHOICES) 
    strength = models.CharField(max_length = 5, choices = STATS_CHOICES) 
    speed = models.CharField(max_length = 5, choices = STATS_CHOICES) 

    def __str__(self): 
     return (self.heroID) 

class Team(models.Model): 
    name = models.CharField(max_length = 25) 
    leader = models.IntegerField 
    address = models.TextField 
    description = models.TextField 
    members = models.TextField 

class Status(models.Model): 
    heroID = models.ForeignKey('Hero') 
    missionID = models.IntegerField 
    TeamID = models.IntegerField 

    def __str__(self): 
     return (self.heroID, self.missionID, self.TeamID) 

class Alias(models.Model): 
    heroID = models.ForeignKey('Hero') 
    firstName = models.CharField(max_length = 25) 
    surname = models.CharField(max_length = 25) 
    formerCodeNames = models.TextField 
    occupation = models.CharField(max_length = 30) 
    address = models.TextField 
    citizenship = models.CharField(max_length = 40) 
    species = models.CharField(max_length = 40) 

    def __str__(self): 
     return (self.heroID, self.firstName, self.surname) 

eingestellt ich meine settings.py Datei unter den installierten Apps:

INSTALLED_APPS = [ 
    'django.contrib.admin', 
    'django.contrib.auth', 
    'django.contrib.contenttypes', 
    'django.contrib.sessions', 
    'django.contrib.messages', 
    'django.contrib.staticfiles', 

    #custom apps 
    'heroes', 
] 

Und dann stellte ich meine admin.py Datei:

from django.contrib import admin 

# Register your models here. 
from .models import Hero, Stats, Team, Status, Alias 

admin.site.register(Hero, Stats) 
admin.site.register(Team) 
admin.site.register(Status, Alias) 

In der Eingabeaufforderung ich aus getippt: Python manage.py makemigrations und ich diesen Fehler hätte - „Attribut:‚Alias‘Objekt hat kein Attribut‚Urls‘ „:

(secondproject) C:\Python34\Scripts\secondproject\heroes4Hire>python manage.py 
emigrations 
aceback (most recent call last): 
File "manage.py", line 22, in <module> 
    execute_from_command_line(sys.argv) 
File "C:\Python34\Scripts\secondproject\lib\site-packages\django\core\managem 
\__init__.py", line 367, in execute_from_command_line 
    utility.execute() 
File "C:\Python34\Scripts\secondproject\lib\site-packages\django\core\managem 
\__init__.py", line 359, in execute 
    self.fetch_command(subcommand).run_from_argv(self.argv) 
File "C:\Python34\Scripts\secondproject\lib\site-packages\django\core\managem 
\base.py", line 294, in run_from_argv 
    self.execute(*args, **cmd_options) 
File "C:\Python34\Scripts\secondproject\lib\site-packages\django\core\managem 
\base.py", line 342, in execute 
    self.check() 
File "C:\Python34\Scripts\secondproject\lib\site-packages\django\core\managem 
\base.py", line 374, in check 
    include_deployment_checks=include_deployment_checks, 
File "C:\Python34\Scripts\secondproject\lib\site-packages\django\core\managem 
\base.py", line 361, in _run_checks 
    return checks.run_checks(**kwargs) 
File "C:\Python34\Scripts\secondproject\lib\site-packages\django\core\checks\ 
istry.py", line 81, in run_checks 
    new_errors = check(app_configs=app_configs) 
File "C:\Python34\Scripts\secondproject\lib\site-packages\django\core\checks\ 
s.py", line 14, in check_url_config 
    return check_resolver(resolver) 
File "C:\Python34\Scripts\secondproject\lib\site-packages\django\core\checks\ 
s.py", line 24, in check_resolver 
    for pattern in resolver.url_patterns: 
File "C:\Python34\Scripts\secondproject\lib\site-packages\django\utils\functi 
l.py", line 35, in __get__ 
    res = instance.__dict__[self.name] = self.func(instance) 
File "C:\Python34\Scripts\secondproject\lib\site-packages\django\urls\resolve 
py", line 313, in url_patterns 
    patterns = getattr(self.urlconf_module, "urlpatterns", self.urlconf_module) 
File "C:\Python34\Scripts\secondproject\lib\site-packages\django\utils\functi 
l.py", line 35, in __get__ 
    res = instance.__dict__[self.name] = self.func(instance) 
File "C:\Python34\Scripts\secondproject\lib\site-packages\django\urls\resolve 
py", line 306, in urlconf_module 
    return import_module(self.urlconf_name) 
File "C:\Python34\Scripts\secondproject\lib\importlib\__init__.py", line 109, 
import_module 
    return _bootstrap._gcd_import(name[level:], package, level) 
File "<frozen importlib._bootstrap>", line 2254, in _gcd_import 
File "<frozen importlib._bootstrap>", line 2237, in _find_and_load 
File "<frozen importlib._bootstrap>", line 2226, in _find_and_load_unlocked 
File "<frozen importlib._bootstrap>", line 1200, in _load_unlocked 
File "<frozen importlib._bootstrap>", line 1129, in _exec 
File "<frozen importlib._bootstrap>", line 1471, in exec_module 
File "<frozen importlib._bootstrap>", line 321, in _call_with_frames_removed 
File "C:\Python34\Scripts\secondproject\heroes4Hire\heroes4Hire\urls.py", lin 
0, in <module> 
    url(r'^admin/', admin.site.urls), 
File "C:\Python34\Scripts\secondproject\lib\site-packages\django\contrib\admi 
ites.py", line 267, in urls 
    return self.get_urls(), 'admin', self.name 
File "C:\Python34\Scripts\secondproject\lib\site-packages\django\contrib\admi 
ites.py", line 251, in get_urls 
    url(r'^%s/%s/' % (model._meta.app_label, model._meta.model_name), include(m 
l_admin.urls)), 
tributeError: 'Alias' object has no attribute 'urls' 

Was bedeutet das und wie kann ich es beheben? Ich habe andere ähnliche Probleme auf StackOverFlow untersucht, aber ich habe nicht verstanden, wie ich es beheben kann.

+1

Does 'Alias' Modell Modell' ForeignKey' zu 'Der Status hat', wenn ja. Möchten Sie Inline in Admin erstellen? –

+0

Das zweite Argument von 'register' sollte eine Unterklasse von' ModelAdmin' sein, nicht von 'Model'! – schwobaseggl

+0

Ich verstehe nicht ganz wovon du sprichst, schwobaseggl. Beziehen Sie sich auf die Datei Admin.py? Und welches ist das zweite Argument? –

Antwort

10

Ich bekam endlich meine Antwort bei einem Treffen in der Codebar!

Jede Klasse von model.p muss in admin.py in einer separaten Zeile stehen.

Die Antwort ist also:

from django.contrib import admin 

# Register your models here. 
from .models import Hero, Stats, Team, Status, Alias 

admin.site.register(Hero) 
admin.site.register(Stats) 
admin.site.register(Team) 
admin.site.register(Status) 
admin.site.register(Alias) 
+0

Danke dafür! :) – MrVocabulary

+0

Oder Sie können alle Modelle auf einmal als Array-Parameter wie folgt übergeben: admin.site.register ([Held, Statistiken, Team, Status, Alias]) –

Verwandte Themen