我正在尝试记录与记录相关的注释。提交表单时,它正在尝试重定向到相同的URL,但没有记录ID,这应该是查看页面所必需的。我在带有记录ID的网址中定义了它,因此它应该是tracker / 19 / newnote
我希望它路由到tracker / 19 / detail,我不确定它为什么路由到tracker / newnote,这在我的urls文件中不存在。也许我需要创造它?
无论如何,如果有人想和我一起解决这个问题,这里有我的文件。
models.py
class Record(models.Model):
serial = models.CharField('Serial Number', max_length=9)
product = models.CharField('Product', max_length=6)
ticket = models.CharField('Log/RID', max_length=9)
eng_date = models.DateField('Date Engaged')
customer = models.CharField('Customer', max_length=80)
details = models.TextField('Problem Details', max_length=800)
owner = models.CharField('Owner', max_length=40)
class Note(models.Model):
record = models.ForeignKey(Record, on_delete=models.CASCADE)
note_text = models.TextField('Notes', max_length=2000)
note_date = models.DateField('Date Entered')
views.py
def newnote(request, record_id):
if request.method == 'POST':
form = NoteForm(request.POST)
if form.is_valid():
r = Record.objects.get(pk=record_id)
r.note_set.create(note_text=form.note_text, note_date=form.note_date)
r.save()
return HttpResponseRedirect('/tracker/%s/detail/' % record_id)
else:
form = NoteForm()
return render(request, 'tracker/noteform.html', {'form': form})
forms.py
class NoteForm(ModelForm):
class Meta:
model = Note
fields = ['note_text',
'note_date'
]
widgets = {
'note_date': DateInput(),}
urls.py
urlpatterns = [
path('', views.index, name='index'),
path('create/', views.create, name='create'),
path('<int:record_id>/detail/', views.detail, name='detail'),
path('result/', views.result, name='result'),
path('query/', views.query, name='query'),
path('all/', views.show_all, name='all'),
path('<int:record_id>/newnote/', views.newnote, name='newnote'),
] + static(settings.STATIC_URL, document_root=settings.STATIC_ROOT)
nameform.html 模板
<div id=form>
<h3>New Note??</h3>
<hr>
<form action="/tracker/newnote/" method="post">
<div id="fields">
{% csrf_token %}
<p>Note:<br>{{ form.note_text }}</p>
<p>Note Date:<br>{{ form.note_date }}</p>
<input type="submit" value="Submit" />
</div>
</form>
</div>