2017-07-10 2 views
0

Ich mache ein einfaches Formular, um Benutzerinformationen zu erhalten und auf der nächsten Seite mit django anzuzeigen. aber ich erhalte den Fehler Der Wert von 'Form' muss von 'BaseModelForm' erben, und wenn ich versuche, von ModelForm zu erben, zeigt es den Fehler an, dass es kein Modul ModelForm gibt.Der Wert von 'Form' muss von 'BaseModelForm' in Django erben

admin.py 


from django.contrib import admin 
from .models import Album 
from .forms import NameForm 
from django.forms import * 
from django.db.models import * 
from models import * 

admin.site.register(Album) 


class MyModelAdmin(admin.ModelAdmin): 
form = NameForm 
admin.site.register(NameForm, MyModelAdmin) 


class NameFormAdmin(admin.ModelAdmin): 
form = NameForm 


class NameForm(forms.Form): 

class Meta: 
    model = NameForm 

views.py

from django.contrib import admin 
from .models import Album 
from .forms import NameForm 
from django.forms import * 
from django.db.models import * 
from models import * 

admin.site.register(Album) 


class MyModelAdmin(admin.ModelAdmin): 
form = NameForm 
admin.site.register(NameForm, MyModelAdmin) 


class NameFormAdmin(admin.ModelAdmin): 
form = NameForm 


class NameForm(forms.Form): 

class Meta: 
    model = NameForm 

forms.py

from django import forms 
from .models import NameForm 
from django.forms import ModelForm 


class NameForm(forms.Form): 
class Meta: 
    model = NameForm 
    fields = '__all__' 
your_name = forms.CharField(label="Your name", max_length=100) 

name.html

<form action="/profile/see" method="post"> 
{% csrf_token %} 
{{ NameForm }} 
<input type="submit" value="Submit" /> 
</form>  
+0

Die Benennung Ihres Modells 'NameForm' und Ihres Formulars' NameForm' verursacht ebenfalls Probleme. Verwenden Sie in Ihrem 'forms.py' den Import' from django import forms' und dann die Unterklasse 'forms.ModelForm'. – Alasdair

Antwort

0

Sie haben NameForm in allen Dateien definiert Sie auf dem Laufenden und Sie auch habe ein Modell namens NameForm, die Sie in der Datei forms.py importieren. Sie sollten ein Formular nicht denselben Namen wie ein Modell nennen.

Sie importieren auch alles mit from foo import * Syntax, die wirklich schlecht ist, weil Sie Ihre NameForm mit Ihrer Modelldefinition überschreiben könnten oder umgekehrt.

In Ihrem HTML-Code tun Sie {{NameForm}}, was falsch ist. Die richtige Methode zum Rendern eines Formulars in HTML mit der forms.Form-Klasse lautet {{ form }}.

Verwandte Themen