我无法更新Django中的项目
my AppApplication的个人用户在创建条形图后立即创建条形图信息。我想让他们能够更新他们的酒吧信息,但它不断返回错误“选择一个有效的选择。该选择不是可用的选择之一。”我不确定这意味着什么,这种错误对我来说很奇怪 views.py我无法更新Django中的项目,django,django-models,django-views,django-forms,django-templates,Django,Django Models,Django Views,Django Forms,Django Templates,my AppApplication的个人用户在创建条形图后立即创建条形图信息。我想让他们能够更新他们的酒吧信息,但它不断返回错误“选择一个有效的选择。该选择不是可用的选择之一。”我不确定这意味着什么,这种错误对我来说很奇怪 views.py def UpdateUserBar(request): user = request.user.id user_email = request.user.email bar = Bar.objects.get(user_id=user
def UpdateUserBar(request):
user = request.user.id
user_email = request.user.email
bar = Bar.objects.get(user_id=user)
form = UpdateBar(request.FILES, instance=bar)
if request.method == 'POST':
form = UpdateBar(request.POST, request.FILES, instance=bar)
if form.is_valid():
form.save()
return redirect('/updatebar')
messages.success(request, 'Bar Information Updated successfully')
# else:
# return redirect('/dashboard')
# messages.error(request, 'Only Post method is accepted')
else:
try:
pass
except Exception as e:
messages.error(request, "Unknown error"+ str(e))
return redirect(request.path)
else:
form = UpdateBar(instance=bar)
context = {"form":form, "user_email":user_email, "bar":bar}
return render(request, "dashboard/super/landlord/update_bar.html", context)
注意:如果我使用第二个已注释的else块代码,它只会将我重定向到仪表板,不会显示错误,因此我无法知道错误原因
models.py
class Bar(models.Model):
bar_status = (
("active", "active"),
("closed", "closed"),
("pending", "pending"),
)
user_id = models.OneToOneField(User, on_delete=models.CASCADE)
name = models.CharField(max_length=50)
address = models.CharField(max_length=100)
opening_time = models.TimeField()
closing_time = models.TimeField()
status = models.CharField(choices=bar_status, default="pending", max_length=14)
image = models.ImageField(upload_to='images/bars', default='images/bars/default.jpg')
def __str__(self):
return self.name
forms.py
class UpdateBar(ModelForm):
class Meta:
model = Bar
fields = '__all__'
updatebar.html
<form class="form-horizontal" role="form" method="post" enctype="multipart/form-data">
{% csrf_token %}
<div class="form-group" style="display: none;">
<label class="col-md-2 control-label">{{ form.name.label }}:</label>
<div class="col-md-10">
<input type="text" id="id_name" name="name" class="form-control" value="{{user.name}}">
</div>
</div>
<div class="form-group" style="display: none;">
<label class="col-md-2 control-label">{{ form.user_id.label }}:</label>
<div class="col-md-10">
<input id="id_user_id" name="user_id" type="text" class="form-control" value="{{user_email}}">
</div>
</div>
<div class="form-group">
<label class="col-md-2 control-label">{{ form.address.label }}</label>
<div class="col-md-10">
{{ form.address | attr:"class:form-control" }}
</div>
</div>
<div class="form-group">
<label class="col-md-2 control-label">{{ form.status.label }}</label>
<div class="col-md-10">
{{ form.status | attr:"class:form-control" }}
</div>
</div>
<div class="form-group">
<label class="col-md-2 control-label">{{ form.image.label }}</label>
<div class="col-md-10">
{{ form.image | attr:"class:form-control" }}
</div>
</div>
<div class="form-group">
<label class="col-md-2 control-label">{{ form.opening_time.label }}</label>
<div class="col-md-10">
{{ form.opening_time | attr:"class:form-control" }}
</div>
</div>
<div class="form-group">
<label class="col-md-2 control-label">{{ form.closing_time.label }}</label>
<div class="col-md-10">
{{ form.closing_time | attr:"class:form-control" }}
</div>
</div>
<div class="form-group">
<div class="col-md-10">
<center><button class="btn btn-primary" type="submit">Update Bar Info</button></center>
</div>
</div>
</form>
{%csrf_令牌%}
{{form.name.label}}:
{{form.user_id.label}}:
{{form.address.label}
{{form.address}attr:“类:表单控件”}
{{form.status.label}
{{form.status}attr:“类:表单控件”}
{{form.image.label}
{form.image | attr:“类:表单控件”}
{{form.opening_time.label}
{{form.opening_time}attr:“class:form control”}
{{form.closing_time.label}
{form.closing|time|attr:“class:form control”}
更新酒吧信息
“选择一个有效选项。该选项不是可用选项之一。”通常意味着具有选项的字段未与可用选项之一一起正确提交。在本例中,这意味着状态有问题,因为这是唯一使用选项的字段
请注意,在类栏中
定义了两次状态
;第二次将覆盖第一次。我不确定这是否与问题有关,但总有一天会产生问题。哇,你想得真周到。我已经更新了问题。但我仍然面临同样的错误。@coderboy您确实需要将此代码减少到产生错误的最小值。例如,您有一个冗余的try:pass;除了…
某个地方。看见