Ich fühle mich sehr dumm und verwirrt, dieses Problem so lange anzugehen. Es funktioniert ganz gut, zeigt Umfrage fein, aber es speichert nicht gespeichertes Formular in meiner Datenbank. Ich habe viele Fragen/Lösungen gesehen, aber keiner von ihnen hat mir geholfen.Django 1.10 Formular speichert keine Daten in DB
Hier sind meine models.py
from __future__ import unicode_literals
from django.db import models
#from multiselectfield import MultiSelectField,
from django.contrib.auth.models import User
#from django.forms import ModelForm
# Create your models here.
class user_prefs(models.Model):
cuisine_choice = (
('1', 'Italian'),
('2', 'American'),
('3', 'Japanese'),
('4', 'French'),
('5', 'Mexican'),
('6', 'Chinese'),
('7', 'Indian'),
('8', 'Middle Eastern')
)
lunch_pref = (
('1', 'Coffeehouse'),
('2', 'Cafe'),
('3', 'Restaurant'),
('4', 'Fast Food'),
('5', 'Takeaway'),
('6', 'Stake House')
)
dinner_pref = (
('1', 'Restaurant'),
('2', 'Takeaway'),
('3', 'Delivery'),
('4', 'Fast food'),
('5', 'Coffeehouse'),
('6', 'Cafe'),
('7', 'Cooking at home')
)
sunday = (
('1', 'Cultural activities(Museums, Galleries, Exhibitions etc.)'),
('2', 'Sport activities'),
('3', 'Attending sport events'),
('4', 'Music events'),
('5', 'Hiking'),
('6', 'Going to park')
)
friday = (
('1', 'Bar'),
('2', 'Nightclub'),
('3', 'Karaoke'),
('4', 'Netflix & chill'),
('5', 'Videogames'),
('6', 'Cinema'),
('7', 'Theater'),
('8', 'Restaurant')
)
userID = models.ForeignKey(User) #related_name='User', null=True
Cuisine = models.IntegerField(choices=cuisine_choice)
Cuisine1 = models.CharField(max_length=30)
LunchPref = models.IntegerField(choices=lunch_pref)
DinnerPref = models.IntegerField(choices=dinner_pref)
Sunday = models.IntegerField(choices=sunday)
Friday = models.IntegerField(choices=friday)
Scheint mir so weit in Ordnung.
hier Modelform (forms.py)
class user_prefsForm(ModelForm):
class Meta:
model = user_prefs
fields = ['Cuisine', 'Cuisine1', 'LunchPref', 'DinnerPref', 'Sunday', 'Friday']
form = user_prefsForm()
hier views.py ist
def display1(request):
if not request.user.is_authenticated:
return redirect(settings.LOGIN_URL)
#form = user_prefsForm(request.POST)
def display(request):
if request.method == 'POST':
form = user_prefsForm(request.POST)
if form.is_valid():
form.userID = request.user
form.save()
return HttpResponseRedirect('/')
else:
form = user_prefsForm()
return render(request, 'display.html', {'form': form})
Vorlage
Please state your preferences below
<form action='/' method="POST" >
{% csrf_token %}
<p>What is you favourite cuisine?</p>
{{ form.Cuisine }}
<p>If not listed above or you want to add more to that, coud you please tell us? </p>
{{ form.Cuisine1 }}
<p>What would be your lunch preference ?</p>
{{ form.LunchPref }}
<p>What would be your Dinner preference ?</p>
{{ form.DinnerPref }}
<p>What would you do on your Friday free time ?</p>
{{ form.Sunday }}
<p>What would you do on Sunday?</p>
{{ form.Friday }}
<button type="submit">Submit</button>
{% endif %}
</html>
Nur für den Fall urls.py (tho ich glaube nicht, es würde jedoch irgendwelche Probleme geben):
urlpatterns = [
url(r'^$', index),
url(r'^letusknow/', display, name='display'),
url(r'^letusknow/', display1, name='display1'),
]
Zunächst hatte ich Modelle.CharField in meinen Modellen, die auch nicht funktioniert.
also, wenn ich mache sonst: return HttpResponseRedirect ('page.html') würde es funktionieren? – pyjka
Ich verstehe Ihren Kommentar nicht – e4c5
Ich habe Ihnen die richtige Form gezeigt, bitte verwenden Sie es. Und ändern Sie Ihre Vorlage – e4c5