2013-07-17 13 views
6

Jestem front-endowym devem, który zmaga się z Django. Mam podstawy prawie całkowicie, ale uderzyłem w ścianę w następnym punkcie.Django: Nowa klasa dodana w model.py nie wyświetla się na stronie administratora

Mam witrynę działającą lokalnie, a także na maszynie programistycznej. Lokalnie dodałem model dodatkowej klasy do już istniejącej aplikacji, zarejestrowałem ją w odpowiednim pliku admin.py i sprawdziłem w ustawieniach. Lokalnie nowa klasa i odpowiednie pola pojawiają się w panelu administracyjnym, ale kiedy przenosimy to wszystko do dev, nie pojawiają się. Ta aplikacja nazywa się "publikuj".

Moja metoda była następująca:

  1. stworzył nową klasę w opublikuj> models.py pliku:
 

    class Whitepaper(models.Model): 
     title = models.CharField(max_length=200) 
     slug = models.SlugField(max_length=100, blank=True) 
     pub_date = models.DateField('date published') 
     section = models.ForeignKey('Section', related_name='whitepapers', blank=True, null=True) 
     description = models.CharField(max_length=1000) 
     docfile = models.FileField(upload_to="whitepapers/%Y/%m/%d", null=True, blank=True) 

  1. aktualizowane i migrowały modelu z użyciem Południowa:
python manage.py schemamigration publish --auto

i

python manage.py migrate publish
  1. zarejestrowany klasy w pliku admin.py:
 

    from models import Section, Tag, Post, Whitepaper 
    from django.contrib import admin 
    from django import forms 

    admin.site.register(Whitepaper) 

Aplikacja jest zapisany w pliku settings.py:

 

    INSTALLED_APPS = (
     ..., 
     ..., 
     'publish', 
     ..., 

)

As to działa na serwerze dev, który obsługuje kilka innych obszarów testowych, restartowanie całej rzeczy jest już nieaktualne tak więc "dotykałem" pliku .wsgi.

W mojej lokalnej wersji dostałem model i pola wyświetlane w panelu administracyjnym, ale na serwerze dev nigdzie ich nie widać.

Czego mi brakuje?

Dziękuję Ci rozgarnięty.

+0

Czy uruchomiłeś migrację na serwerze dev? – karthikr

+0

Tak, ale nie miałem szczęścia. Nawiasem mówiąc, kiedy przeszedłem na serwer na żywo, proces zadziałał. – Marnchair

Odpowiedz

6

Wyjaśniałem problem. Okazało się, że login, którego używałem, aby dostać się do administratora, nie miał uprawnień administratora. Zrobiłem więc nowe z:

python manage.py createsuperuser 

Po zalogowaniu się przy pomocy nowej nazwy użytkownika i hasła mogłem zobaczyć wszystkie moje nowe, błyszczące stoły!

+1

Miałem ten sam problem. Wielkie dzięki. –

+0

jak mogę uczynić ten model publicznym nie tylko dla superużytkowników? –

0

Czy jesteś pewien, że dotknięcie pliku .wsgi spowoduje ponowne uruchomienie aplikacji?

Wygląda na to, że tak nie jest.

Upewnij się, że aplikacja została ponownie uruchomiona. Znajdź dowód dotykający pliku .wsgi, aby ponownie uruchomić aplikację.

Ponieważ nie zapewniasz żadnego wglądu w to, jak serwer aplikacji uruchamia aplikacje, nie będziemy w stanie Ci pomóc.

+0

Dzięki za odpowiedź. Przypuszczam, że istnieje możliwość, że dotykanie nie działa dla tej konkretnej aplikacji. Z pewnością zadziałało w przypadku innych aplikacji. I tak przepchnąłem się do serwera na żywo i cały proces działał dobrze. Miałem wrażenie, że dotykanie .wsgi było jedynym sposobem, aby serwer zrestartował środowisko zamiast twardego restartu. – Marnchair

+0

Wierzę, że serwer działa na mod_wsgi. Dotknięcie pliku wsgi rekompiluje pliki .pyc, a nowa tabela została utworzona w bazie danych. Naprawdę nie rozumiem, dlaczego nowe pola nie pojawiają się w panelu administratora. Czy jest jeszcze jeden krok, którego mi brakuje, pracując na serwerze? – Marnchair

+0

Jest tak, ponieważ serwer prawdopodobnie nie uruchomił się ponownie. Jesteś tego pewien? –

Powiązane problemy