Django保存表单会删除值,因此只保存第一个单词

2024-04-27 04:35:59 发布

您现在位置:Python中文网/ 问答频道 /正文

我目前正在做一个Django项目,我遇到了一个问题,当我保存一个窗体时,值被剥离,所以只保存第一个单词。 我很肯定问题出在某个地方请求.发布.获取在saveAuction方法中,但还没有找到解决方法。你知道吗

这是我的视图.py地址:

from django.views import View
from .models import *
from .forms import *
from django.contrib import messages
from django.core.urlresolvers import reverse

class createAuction(View):
    def get(self, request):
        form = createauction()
        return render(request,'auctionForm.html', {'form' : form, "title" : 
"Auction", "path" : "add"})

def post(self, request):
    form = createauction(request.POST)
    if form.is_valid():
        cd = form.cleaned_data
        auction_t = cd['title']
        auction_s = cd['seller']
        auction_d = cd['description']
        auction_mp = cd['min_price']
        auction_dl = cd['deadline']
        form = confAuct()
        return render(request, 'auctionForm.html', {
            "form": form,
            "title": "Confirm auction listing",
            "path" : "save",
            "auction_title" : auction_t,
            "auction_seller" : auction_s,
            "auction_desc" : auction_d,
            "auction_mip" : auction_mp,
            "auction_dL" : auction_dl
        })
    else:
        messages.add_message(request, messages.ERROR, "Not valid data")
        return render(request,'auctionForm.html', {'form' : form, "title" : 
"Auction"})

def saveAuction(request):
    option = request.POST.get('option', '')
    if option == 'Yes':
        a_title = request.POST.get('auction_title')
        a_seller = request.POST.get('auction_seller')
        a_desc = request.POST.get('auction_desc')
        a_mip = request.POST.get('auction_mip')
        a_dL = request.POST.get('auction_dL')
        auct = Auction(title=a_title, seller=a_seller, description=a_desc, 
min_price=a_mip, deadline=a_dL)
        auct.save()
        messages.add_message(request, messages.INFO, "New auction has been 
saved")
        return HttpResponseRedirect(reverse("auction-list"))
    else:
        return HttpResponseRedirect(reverse("home"))


def listAuction(request):
    auctions = Auction.objects.all()
    return render(request, "auctionlist.html", {"title" : "Auction listing", 
"list" : auctions})

这是我的表单.py你知道吗

from django import forms
from django.http import HttpResponse, HttpResponseRedirect
from YAAS.models import Auction

class createauction(forms.Form):
    model = Auction
    title = forms.CharField(required=True)
    seller = forms.CharField(required=True)
    description = forms.CharField(widget=forms.Textarea(), required=True)
    min_price = forms.IntegerField(required=True)
    deadline = forms.IntegerField(min_value=72, error_messages={"min_value":"Hours can not be less than 72!"}, required=True, help_text="How many hours until deadline? (min 72 h)")


class confAuct(forms.Form):
    CHOICES = [(x, x) for x in ("Yes", "No")]
    option = forms.ChoiceField(choices=CHOICES)
    t_title = forms.CharField(widget=forms.HiddenInput())

这是我的型号.py你知道吗

from django.db import models
from django.forms import ModelForm
from django.utils import timezone

# Create your models here.
class Auction(models.Model):
    title = models.CharField(max_length=160)
    seller = models.CharField(max_length=160)
    description = models.CharField(max_length=420)
    min_price = models.IntegerField(default=0)
    deadline = models.IntegerField(default=72)

    def __unicode__(self):
        return self.title

Tags: djangofromimportformgetreturntitlemodels