我很樂意將Django用於學校項目,但我遇到了幾個問題。TypeError:render_option()之後的參數必須是一個序列,而不是int
標題中描述了我需要幫助的人。基本上,我有一個todo應用程序,我可以添加任務。現在我在視圖中添加了一個表單讓用戶添加任務,但我無法訪問Django管理員中的任務。
我仍然可以用管理員,但每次我嘗試添加或通過管理員編輯任務,它拋出我這個錯誤的時間將其刪除:
TypeError at /admin/todo/task/12/`
render_option() argument after * must be a sequence, not int
但是,我增加了對用戶的作品形式好。
我的猜測是12
我們可以看到url正在發生錯誤,但我不知道爲什麼。我指出我對Django還是比較新的,我沒有發現任何類似的問題(發現this,但它並沒有幫助我),所以我認爲在這裏問一下可能是一個好主意:)。下面是我的文件:
待辦事項/ models.py
PRIORITY_TYPES = (
(1, 'Normal'),
(2, 'High'),
)
class Task(models.Model):
application = models.CharField(max_length=120, default='esportbets')
title = models.CharField(max_length=120)
author = models.CharField(max_length=60, blank=True, null=True)
created = models.DateTimeField(auto_now_add=True)
completed = models.DateTimeField(blank=True, null=True)
priority = models.IntegerField(choices=[PRIORITY_TYPES], default=1)
done = models.BooleanField(default=False)
def __unicode__(self):
return self.title
待辦事項/ forms.py
class AddTaskForm(forms.Form):
application = forms.CharField(max_length=120, initial='esportbets', help_text='the application it is about')
title = forms.CharField(max_length=120, help_text='the task to do')
priority = forms.ChoiceField(choices=PRIORITY_TYPES, initial=1)
待辦事項/ views.py
def index(request):
if request.method == 'POST':
form = AddTaskForm(request.POST)
if form.is_valid():
new_task = Task.objects.create(application=form.cleaned_data['application'],
title=form.cleaned_data['title'],
priority=form.cleaned_data['priority'])
request.POST = None
redirect('/todo/', RequestContext(request))
else:
form = AddTaskForm()
tasks = Task.objects.all().order_by('-created')
tasks_high = tasks.filter(priority=2)
tasks_normal = tasks.filter(priority=1)
template_datas = {'form':form, 'tasks_high':tasks_high, 'tasks_normal':tasks_normal, 'user':request.user}
return render_to_response('todo/base.html', template_datas, RequestContext(request))
待辦事項/ base.html文件
{% if user.is_authenticated %}
<hr /><h3>ADD A TASK</h3><br />
<form method="post" action=".">
{% csrf_token %}
{{ form.as_p }}
<br />
<input type="submit" value="add" />
<input type="reset" value="reset" />
</form>
{% endif %}
嗨,感謝您的幫助,解決了我的問題。由於'PRIORITY_TYPES'的_complex_結構,Django無法獲得優先級字段的正確值嗎? –
用'[]'包裹你的選擇是錯誤的,因爲你已經列出了一個列表。它產生了一個元組列表的列表。 ChoiceField只知道字符串。它在內部只產生一個'
嗨,我已經知道'django.forms.ModelForm',但我沒有真正複製每一個字段(7箇中只有3個,因爲它們中的一些在創建時必須留空)。關於圍繞我的選擇的'[]',我想我忘了在將雙元組移動到一個變量以將其傳遞給我的表單時刪除它們:/。 –