django表单由于文件和外键未提交

时间:2019-07-05 12:35:55

标签: django forms slug

我的django客舱表单未提交。我在机舱模型中应用了外键和子弹,此后,我的表格停止提交。每当我输入所有字段并单击“提交”按钮时,表单页面就会重新加载,并且没有数据正在提交。最重要的是,它没有显示任何错误,因此我可以对其进行修复。不同的东西,但仍然没有用。我坚持下去。请帮忙!

class Centre(models.Model):
    name= models.CharField(max_length=50, blank=False, unique=True)
    address = models.CharField(max_length =250)
    phone_regex = RegexValidator(regex=r'^\+?1?\d{9,15}$',
                             message="Phone number must be entered in the format: '+999999999'. Up to 10 digits allowed.")
    contact = models.CharField(max_length=100, blank=False)
    phone = models.CharField(validators=[phone_regex], max_length=10, blank=True)  # validators should be a list
    slug = models.SlugField(unique=False)

    def save(self, *args, **kwargs):
        self.slug = slugify(self.name)
        super(Centre, self).save(*args, **kwargs)


  class Cabin(models.Model):
     random_string = str(random.randint(100000, 999999))
     centre_name = models.ForeignKey(Centre, on_delete=models.CASCADE,blank=True,null=True)
     code = models.CharField(max_length=6, blank=False, unique=True, default=random_string)
     total_seats = models.IntegerField(blank='False')
     category=models.CharField(max_length=100, default=False)
     booked_date=models.DateField(blank='False')
     released_date=models.DateField(blank='False')
     price=models.IntegerField(blank=False, default=None)
     slug = models.SlugField(unique=False,default=None)

    def save(self, *args, **kwargs):
        self.slug = slugify(self.category)
        super(Cabin, self).save(*args, **kwargs)


 In views.py file

 class CabinCreateView(CreateView):
     fields = '__all__'
     model = Cabin
     success_url = reverse_lazy("NewApp:logindex")


    def form_valid(self, form):
        self.object = form.save(commit=False)
        self.object.cabin = Cabin.objects.filter(slug=self.kwargs['slug'])[0]
        self.object.save()
        return HttpResponseRedirect(self.get_success_url())


   In my cabin template,

   <div class="row">
                                        <div class="col-md-6">
                                            <form method="POST">
                                             {% csrf_token %}
                                                {{ form.non_field_errors }}

                                                <div class="col col-md-12">
                                                <div class="fieldWrapper" >
                                                {{ form.centre_name.errors }}
                                                    <div class="form-group col col-md-3">
                                                        <label>Centre Name</label>
                                                        {{form.centre_name}}
                                                </div>

                                                <div class="form-group col col-md-3" style="float:right; margin-top=-80px;width=200%">
                                                    <label for="{{form.code.id_for_label}" style="margin-left:200px;width:200%;white-space:nowrap;">Code</label>
                                                     <input type="text" placeholder="Code" value="{{form.code.value}}" name="code" maxlength="6" id="id_code" style="width:500px; margin-left:200px;">
                                                </div>

                                                </div>

                                                <div class="col col-md-12">
                                                 <div class="form-group col col-md-3" style="float:right; margin-top=-80px;">
                                                <label for="{{form.total_seats.id_for_label}" style="margin-left:200px;width:200px;white-space:nowrap;">seats</label>
                                                 <input type="text" placeholder="seats" name="total_seats" id="id_total_seats" style="width:500px; margin-left:200px;">
                                                 </div>

                                                    <div class="fieldWrapper" >
                                                {{ form.category.errors }}

                                                 <div class="form-group col col-md-3" >

                                                    <label for="{{form.category.id_for_label}" style="margin-top:-40px">Category</label>
                                                <input type="text" name="category"  maxlength="100" id="id_category" placeholder="Category" style="width:500px";>
                                                 </div></div></div>

                                                <div class="col col-md-12">


                                                    <div class="fieldWrapper" >
                                                {{ form.released_date.errors }}

                                                 <div class="form-group col col-md-3" style="float:right; margin-top=-80px;">
                                                <label for="{{form.released_date.id_for_label}" style="margin-left:200px;width:200px;white-space:nowrap;">released date</label>
                                                 <input type="text" placeholder="%yyyy-mm-dd" name="released_date" id="id_released_date" style="width:500px; margin-left:200px;">
                                                 </div>
                                                    </div>

                                                <div class="fieldWrapper" >
                                                {{ form.booked_date.errors }}

                                                 <div class="form-group col col-md-3" >
                                                    <label for="{{form.booked_date.id_for_label}" style="margin-top:-40px">booked date</label>
                                                <input type="text" name="booked_date"   id="id_booked_date"  placeholder="%yyyy-mm-dd" style="width:500px";>
                                                 </div>
                                                    </div>

                                                 </div>


                                        <div class="col col-md-12">


                                        <div class="form-group col col-md-3" >
                                                    <label for="{{form.price.id_for_label}" style="margin-top:-40px">price</label>
                                                <input type="text" name="price"  maxlength="10" id="id_price" placeholder="in rupees" style="width:500px";>
                                                 </div>
                                            </div>
                                                <div class="form-group col col-md-3" >

                                                <input type="submit"  onclick="comparedate()" value="Save" class="btn btn-primary" style=" height:30px;width:80px;padding-bottom:2em;"/>
                                                </div></div>

                                                </form>


                                        </div></div></div></div></div></div></div></div></div></div>

1 个答案:

答案 0 :(得分:0)

您的问题似乎在您的views.py文件中。您正在告诉视图它应该构建一个包含模型上字段的__all__的表单,但是在模板中您不包含slug字段。由于您已经覆盖了save模型上的Cabin方法以填充slug字段,所以我想您不希望它显示在模板中。

您有两个解决方案。您可以将隐藏字段添加到包含子域的模板。或者,我认为是更好的选择,您可以更改视图上的fields属性以排除slug字段。

 class CabinCreateView(CreateView):
     fields = ('centre_name', 'code', 'total_seats', 'category', 'booked_date', 'released_date', 'price',)
     model = Cabin
     success_url = reverse_lazy("NewApp:logindex")

P.S。这不是您要问的问题,但是我不禁注意到您的模板中看起来像是多个损坏的变量。您可能要检查标签for=""属性是否按预期工作。