无法使用Django保存ForeignKey数据

时间:2018-01-12 21:31:12

标签: python django

我正在尝试记录与记录相关的注释。提交表单时,它正在尝试重定向到相同的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>

0 个答案:

没有答案