【发布时间】:2017-06-21 20:16:33
【问题描述】:
我希望将父母的变量之一预先填充到孩子的模型形式中,特别是序列号。我已经设法将序列号作为 URL 的一部分,但想弄清楚如何将它实现为表单页面上的变量。
Models.py
class Product(models.Model):
serial_number = models.CharField(unique=True, max_length=15)
class ProductInstance(models.Model):
serial_number = models.ForeignKey('Product', on_delete=models.SET_NULL, null=True)
Views.py
class ProductInstanceCreate(CreateView):
model = ProductInstance
template_name = 'myapp/edit_productinstance.html'
form_class = GunInstanceForm
def get_success_url(self):
return reverse_lazy ('product-detail', kwargs={'pk': self.object.serial_number.pk})
Forms.py
class ProductInstanceForm(forms.ModelForm):
class Meta:
model = ProductInstance
fields = '__all__'
templates/myapp/product_detail.html
...
<a href="{% url 'productinstance_create' serial_number=product.serial_number %}">New</a>
...
urls.py
urlpatterns += [
url(r'^productinstance/(?P<serial_number>[-\w]+)/create/$', views.ProductInstanceCreate.as_view(), name='productinstance_create'),]
templates/myapp/edit_productinstance_form.html
{% extends "base_generic.html" %}
{% block content %}
<h2>Serial Number: {{ serial_number }}</h2>
</br>
<form action="" method="post">
{% csrf_token %}
<table>
{{ form }}
</table>
<input type="submit" value="Submit" />
</form>
</br>
<a href="">Back</a>
{% endblock %}
所以目前我可以创建一个 URL,例如:productinstance/D1430913/create/
我现在需要知道:
如何将其用作标题的变量?
如何设置表单默认值?
【问题讨论】:
标签: django python-3.x django-forms