我有这些模特:
class Tour(models.Model):
Name=models.CharField(max_length=100)
Count=models.SmallIntegerField()
PriceUnitCode=models.ForeignKey(PriceUnit)
Price=models.CharField(max_length=12)
Description=models.TextField()
ActionDate=models.DateTimeField(auto_now=True,editable=False)
ActionUserCode=models.ForeignKey(User,editable=False)
StatusTypeCode=models.ForeignKey(StatusType)
class Images(models.Model):
Image = models.ImageField(upload_to="gallery")
Tour=models.ForeignKey(Tour)
我想设计一个表单,以相同的形式为该巡演添加一个巡演和一组图像。 这是我的FormModel:
class TourForm(ModelForm):
class Meta:
model = Tour
我在views.py中执行此操作:
def myview(request,key):
GalleryFormSet = inlineformset_factory(Tour,Images)
if request.method == 'POST':
form = TourForm(request.POST, request.FILES)
if form.is_valid():
tour=form.save()
formset=GalleryFormSet(request.POST, request.FILES,instance=tour)
if formset.is_valid():
formset.save()
else:
form = TourForm()
formset=GalleryFormSet()
return render_to_response('airAgency/addtour.html', {'form': form,'formset':formset})
在我的模板中:
<form method='POST' enctype="multipart/form-data" dir="rtl">
{% csrf_token %}
{{ form.as_p }}
{{ formset.management_form }}
{% for form in formset %}
{{ form }}
{% endfor %}
<input type="submit" />
</form>
但它有这个错误:
unexpected indent (views.py, line 122)
第122行是这样的:
if(form.is_valid()):
当然我改变了这个代码很多,但每次在第122行都有错误,而第122行的代码每次都在改变! 它出什么问题了?!!! 提前谢谢
答案 0 :(得分:3)
也许你在那一行(或相反的地方)放置空格而不是标签,有时我会碰到
答案 1 :(得分:3)
很有可能,您的缩进在第122行中有所不同,很可能是因为您在前导空格中存在不可见的差异。
示例:块中有许多行,所有行都以选项卡开头,编辑器将其显示为... 8个空格。其中一行(第122行)包含一个空格和一个制表符作为前导空格,由编辑器显示为... 8个空格。你没有看到差异,然而,Python的行开始是不同的,这就是问题所在。
建议:从第122行删除所有前导空格,然后使用您的编辑器自动添加它以获得一致的结果。或者从第122行删除所有前导空格,并使用与块的其余部分相同的开头。
要验证是这种情况,请使用ViM打开文件,然后键入:set list
(所有字符)。现在,TAB将显示为^I
,而空格将显示为单个空格字符。
答案 2 :(得分:1)
是:
if form.is_valid():
答案 3 :(得分:1)
最常见的错误来源(例如此错误)是前一种方法中的缩进更改,或者通常向上报告实际错误的几行。 最最问题的常见来源是从网络中复制+粘贴某些内容,这些内容可以是标签/间距,也可以比您正在做的更多/更少缩进。
你的编辑应该警告你这样的事情。例如,Komodo IDE提供了指示缩进级别的箭头。所以将它加载到一个花哨的编辑器中,然后用它来发现问题。有一篇关于python IDE的帖子。