Django: Falsche Referenz auf Klasse im Unterordner

Django, Flask, Bottle, WSGI, CGI…
Antworten
beukelaer
User
Beiträge: 10
Registriert: Dienstag 21. August 2018, 14:15

Donnerstag 30. August 2018, 19:21

Hallo,
in django habe ich folgenden Paketaufbau:

Code: Alles auswählen

AppName/
    __pycache__
    migrations
    model_
        user.py
    public
    static
    templates
    __init__.py
    settings.py
    urls.py
    views.py
    ...
In der views.py will ich mit Einbindung von

Code: Alles auswählen

 from .model_ import user 
auf User zuzugreifen. Der Zugriff schaut folgend aus:

Code: Alles auswählen

 user = User() 
Ich habe bereits auch folgendes versucht:

Code: Alles auswählen

 
 user = user.User.create("")
user.py:

Code: Alles auswählen

from django.db import models
class User(models.Model):
    login = models.CharField(max_length=30)

    @classmethod
    def create(cls, login):
        user = cls(login=login)
        return user

Leider klappt das nicht, da er "User" in der view.py nicht findet. Was mache ich falsch? Muss ich __init__.py in den Unterordner "model" auch rein kopieren?
Benutzeravatar
noisefloor
User
Beiträge: 2495
Registriert: Mittwoch 17. Oktober 2007, 21:40
Wohnort: Görgeshausen
Kontaktdaten:

Donnerstag 30. August 2018, 20:34

Hallo,

der Import funktioniert, d.h. die bekommst keine ImportError, richtig?

`user = User()` so nicht funktionieren, weil du ja das komplette Modul importierst und nicht gezielt die Klasse `User` aus `user`. Außerdem würdest du so das importierte `user` überschreiben, was nicht gewünscht ist.

Was IMHO funktionieren sollte ist `my_user = user.User()`

BTW: warum legst du die Klassen nicht in die `models.py`, sondern erzeugst für ein Model eine eigene Datei?

Gruß, noisefloor
Antworten