Ubuntu 12.04でPython 2.7でDjango 1.4を使用しています。
Django のテンプレート構文を使用してオブジェクトのリストを生成するテンプレートがあります。各アイテムに「フォーム投稿」を作成して、そのアイテムをリストから削除するオプションを提供したいと考えています。ものすごく単純:
MySQL <remove>
Linux <remove>
Java <remove>
Python <remove>
C++ <remove>
PostgreSQL <remove>
Django <remove>
<remove>
「送信」はどこにありますか。
テンプレートは次のようになります。
{% if not dev.user.is_superuser %}
{% if dev.user.is_authenticated and dev.user.is_staff %}
<ul>
{% for skill in dev.skill_set.all %}
<form action="/removeSkill/" method="post">{% csrf_token %}
<li>
{{ skill.skill }}
<input type="hidden" name="skill" value={{ skill.skill }}>
<label class="formlabel"> </label>
<input type="submit" value="Remove ►"></li>
</form>
{% endfor %}
</ul>
{% endif %}
{{ skill.skill }}
非表示の入力の として値を渡す方法を知る必要がありますvalue
。
助言がありますか?
更新 1:
わかりました、テンプレートで行っていることはうまく機能しているようです。ビューのデータベースからエントリを実際に削除できないようです。
def remove_skill(request):
"""
.. function:: remove_skill()
Remove a skill for a developer
:param request: Django Request object
"""
## Create a logging object
path = os.path.join(os.path.dirname(__file__), 'logs/')
filename = '{0}debug.log'.format(path)
logfile = open(filename, 'w')
now = datetime.datetime.now()
logfile.write('\n --------------------- {0}\n'.format(now))
if (request.user.is_authenticated() and request.user.is_staff):
userProfile = UserProfile.objects.get(user_id = request.user.id)
devSkills = DevSkills(dev = userProfile, skill = request.POST.get('skill'))
logfile.write('user = {0}\n'.format(devSkills.dev_id))
logfile.write('skill to remove = {0}\n'.format(devSkills.skill))
devSkills.delete()
logfile.close()
return dev_profile(request)
ファイルには正しいエントリのdebug.log
情報が表示されますが、スキルを削除しようとすると、引き続き次のエラーが発生します。
DevSkills object can't be deleted because its id attribute is set to None.
提案?