python - 在我的模型中使用 slug 后表单未提交
问题描述
我正在做一个项目,我需要在 url 中隐藏主键,所以我在所有模型中实现了 slug。但是使用另一个模型的外键的模型似乎不能正常工作。表单正在接受值,但无论我做什么都没有提交。我不知道我的代码有什么问题。
视图.py
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())
模型.py
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)
def __str__(self):
return self.name
def get_absolute_url(self):
return reverse("index")
class Cabin(models.Model):
random_string = str(random.randint(100000, 999999))
centre_name = models.ForeignKey(Centre, on_delete=models.CASCADE )
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)
slug = models.SlugField(unique=False,default=None)
def save(self, *args, **kwargs):
self.slug = slugify(self.category)
super(Cabin, self).save(*args, **kwargs)
def __str__(self):
return self.code
def get_absolute_url(self):
return reverse("index")
模板
<form method="POST">
{% csrf_token %}
<div class="form-group col col-md-3">
<label>Centre Name</label>
{{form.centre_name}}
</div>
<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;">
<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;">
<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";>
<input type="submit" value="Save" class="btn btn-primary" style=" height:30px;width:80px;padding-bottom:2em;"/>
</form>
中心表格工作正常,但按提交后客舱表格未提交。页面正在重新加载,这意味着表单无效。也没有出现任何错误。我没有在每个字段中发布{{form.errors}},因为它的代码太多。我已经将它应用于所有领域。
解决方案
推荐阅读
- express - 如何使用 node-fetch 转发多部分表单请求
- mule - Mule 3.9 记录 HTTP 响应发送任务失败并出现错误:本地关闭
- time-series - 尝试转置矩阵时出错
- c++ - C++17变量模板斐波那契数列第n个数
- javascript - For 代码运行时动态填充的数组的循环停止条件
- r - 使用 R 中的列表和列表名称的值替换数据框列的值
- java - 将 Java 8 CompletionStage 迁移到 Vertx Future
- javascript - 我如何自定义 js new Date() 实例
- jquery - jQuery mouseover 和 mouseleave 无法始终如一地工作
- node.js - 为什么使用纱线链接时未解决未满足的对等依赖关系?