在我的数据库中,Instrument
个对象可以包含许多CalibrationCertificate
个对象,这些对象仅包含Instrument
的ForeignKey,发布日期和日期已过期。这两个日期都是自动计算的,无需用户输入。因此,有没有办法可以在Instrument_Detail
视图上放置一个按钮,该按钮会向数据库添加新的CalibrationCertificate
记录,并将instrument
字段设置为当前对象?
答案 0 :(得分:0)
这是恕我直言的最佳解决方案。要在重定向视图中自定义网址,请使用get_redirect_url。
views.py
class AddCalibrationCertificateView(RedirectView):
http_method_names = ['post']
url = '/instrument/1/'
def post(self, request, *args, **kwargs):
'''Here you add new certificate object, use self.kwargs['instrument_pk']
to get related instrument
'''
return super(AddCalibrationCertificateView, self).post(request, *args, **kwargs)
new_cert = AddCalibrationCertificateView.as_view()
urls.py
url(r'^add/certificate/(?P<instrument_pk>\d+)/$', 'views.new_cert', name='new_cert'),
instrument.html
<form action="{% url 'new_cert' 1 %}" method="post">{% csrf_token %}
<input type="submit" value="Add cert" />
</form>