django,html,在原表选择基础资料表的资料后,再资料带回原表
时间: 2023-08-16 07:07:31 浏览: 34
您可以在Django中使用表单来实现这个功能。您需要创建一个包含下拉菜单的表单,以便用户可以选择基础资料表中的一项。然后,当用户提交表单时,您可以将所选资料带回原表中。
以下是一个简单的示例,假设您已经有了两个模型:原表`OriginalTable`和基础资料表`BaseTable`,并且它们之间有一个外键关系:
```python
# models.py
from django.db import models
class BaseTable(models.Model):
name = models.CharField(max_length=100)
class OriginalTable(models.Model):
base = models.ForeignKey(BaseTable, on_delete=models.CASCADE)
# other fields...
```
现在,您需要创建一个表单,以便用户可以选择基础资料表中的一项,并将其带回原表。在Django中,可以使用`ModelChoiceField`来创建下拉菜单,该字段将从一个模型中获取选项。
```python
# forms.py
from django import forms
from .models import BaseTable
class BaseTableForm(forms.Form):
base = forms.ModelChoiceField(queryset=BaseTable.objects.all())
```
然后,在视图函数中,您需要处理表单提交并将所选资料带回原表。以下是一个示例视图函数:
```python
# views.py
from django.shortcuts import render
from .forms import BaseTableForm
from .models import OriginalTable
def my_view(request):
if request.method == 'POST':
form = BaseTableForm(request.POST)
if form.is_valid():
base = form.cleaned_data['base']
# do something with the selected base...
original = OriginalTable.objects.create(base=base)
# redirect to success page or render a template
else:
form = BaseTableForm()
return render(request, 'my_template.html', {'form': form})
```
在上面的代码中,我们首先检查请求方法是否为POST。如果是POST请求,我们处理表单数据并创建一个带有所选基础资料的新原表实例。否则,我们只需呈现表单。
最后,您需要在模板中呈现表单。以下是一个简单的示例:
```html
<!-- my_template.html -->
<form method="post">
{% csrf_token %}
{{ form.as_p }}
<button type="submit">Submit</button>
</form>
```
在这里,我们使用`form.as_p`来呈现表单字段,这将把每个字段包装在`<p>`标签中。您可以自定义呈现表单的方式,例如使用表格或自定义CSS样式。