我尝试将下拉菜单中的两个值合并到HTML输入字段中
model.py
class ProjectID(models.Model):
project_id = models.CharField(max_length=120, unique=True)
def __str__(self):
return self.project_name
class ProjectName(models.Model):
project_name = models.CharField(max_length=120, unique=True)
def __str__(self):
return self.project_name
class Project(models.Model):
combine_name = models.CharField(max_length=50, unique=True)
project_id = models.ForeignKey(ProjectID,
related_name='p_number',
on_delete=models.CASCADE)
project_name = models.ForeignKey(ProjectName,
related_name='p_name',
on_delete=models.CASCADE)
def __str__(self):
return f"{self.project_id}_{self.project_name}"
字符串
views.py
class AddProject(generic.FormView):
template_name = 'project/project-add.html'
form_class = ProjectAddForm
success_url = reverse_lazy('project:project-dashboard')
型
urls.py
urlpatterns = [
path('', views.dashboard, name='project-dashboard'),
path('add/', views.AddProject.as_view(), name='project-add')
]
型
网址:forms.py
class ProjectAddForm(forms.ModelForm):
class Meta:
model = Project
fields = ['project_id', 'project_name', 'combine_name']
型
project-add.html
{% block main-body %}
<div class="container">
<form method="post" class="form card p-3 mt-5">
{% csrf_token %}
<div class="row align-items-start">
<div class="col-md-4" id="option_a">
{{ form.project_id|as_crispy_field }}
</div>
<div class="col-md-4" id="option_b">
{{ form.project_name|as_crispy_field }}
</div>
</div>
<div class="row align-items-center">
<div class="col-md-8">{{ form.combine_name|as_crispy_field }}</div>
</div>
{% endblock main-body %}
型
如果下拉菜单被选中并显示在字段form.combine_name
中,我尝试合并form.project_id
form.project_name
使用jquery的结果失败了,因为我猜它不可能使用模板标签来处理
$('#option_a, #option_b').change(function() {
var val = $('#option_a').val() + $('#option_b').val(),
new_price;
$("#new_option").text(val);
型
1条答案
按热度按时间lf3rwulv1#
为什么需要合并_name字段?看起来它所要做的就是显示另外两个字段的组合字符串。这些字段已经在数据库中,因此复制它们没有意义。我会把那些田地都处理掉。
您已经使用str方法动态创建了值。为什么要分开保存呢?