ユーザーがリストから (データベースから) 1 つの「もの」を選択できるようにしてから、そのレコードを使用してデータベース内の他のものを見つけようとしています。しかし、選択ページから選択情報を取得できません。
これを関連するコードのかなり完全なスナップショットにしようとしますが、削除しすぎたり、残しすぎたりする可能性があります。申し訳ありません。
私のmodels.py:
urlpatterns = patterns('',
url(r'^$', 'dblook.views.index', name='home'),
url(r'^dblook3/', 'dblook.views.try3', name='home2'),
url(r'^dblook4/', 'dblook.views.try4', name='home3'),
)
私のdblook/models.py:
from django.db import models
class serial_number(models.Model):
def __unicode__(self):
return self.serialno
#return self.question
class Meta:
managed=False
db_table='serial_number'
sn_id = models.AutoField(primary_key=True)
serialno = models.CharField(max_length=128)
comment = models.ForeignKey(comment,null=True,db_column='comment')
my views.py (データベース モデルのインポート以外のすべてのインポートをスキップします。誰かが本当にそれらを必要とする場合は、更新します)
from dblook.models import *
class SerialnoSelectForm(forms.Form):
serialno = forms.CharField(max_length=16)
selected = forms.BooleanField()
class serialform(ModelForm):
class Meta:
model = serial_number
exclude=('comment','sn_id')
selected = forms.BooleanField()
class snselect(forms.Form):
sno = forms.ChoiceField()
def try3(request):
if ( request.POST ):
output = "HEllo world, thanks for posting"
return HttpResponse(output)
else:
sslst = snselect(serial_number.objects.filter(serialno__startswith="A128").order_by('-serialno'))
t = loader.get_template('select_serialno.html')
c = Context({
'sslst': sslst,
})
c.update(csrf(request))
return HttpResponse(t.render(c))
def try4(request,dsn):
if ( request.POST ):
output = "HEllo world, thanks for posting to 4"
return HttpResponse(output)
else:
return HttpResponse("Error")
そして、私のテンプレート (select_serialno.html) は次のとおりです。
<h1>Select a serial number</h1>
<ul>
<form method='post' action'='/dbtest4/{{serial_number.sn_id}}/showme'>
{% csrf_token %}
{% for sn in sslst %}
<input type="submit" name="sn.serialno" id="choice{{ forloop.counter }}" value="{{choice.id}}"/>
<label for="choice{{ forloop.counter }}">{{ sn.serialno }}</label><br/>
{% endfor %}
<input type="submit" value="data" />
</form>
dblook3 に移動すると、シリアル番号のデータベースから素敵なリストが取得され、ボタンを押すとすぐに dblook4 の URL に移動します (この場合、常に '/dbtest4//showme/' の代わりに「/dbtest4/3/showme/」のようなもの)。残念ながら、彼らがどのボタンを押したかを知る方法はないようです。
の「もの」に何を入れても、<form method='post' action'='/dbtest/{{stuff}}/showme'>
常に空です。
veiws.py の try4なども試しif( 'choice' in request.POST ):
ましたが、うまくいきませんでした。
では、「look3」から「look4」までに選択されたものに関する情報を取得するにはどうすればよいですか? 私は何でもします...しかし、なぜ私がそうしているのかを説明できれば、あなたの答えが私の問題を解決するだけでなく、他の人が理解するのに役立つことを願っています...
(上記がかなり「進化的」に見える場合、それは私がこれを3日間ハッキングしているためです...)
ありがとう!