Django-如何将ForeignKey下拉列表放到文本框中?

时间:2019-10-30 16:15:22

标签: python html django django-forms

我有一个表单,该表单的字段是ForeignKey,因为它可以确保输入的ID#是数据库中存在的ID。成为外键后,它更改了我的字段,使其看起来像如下所示的下拉菜单,其中包含一堆称为“ Salesman对象('数字')< / strong>”,而不是像以前那样是一个文本框。用户应该能够输入他们的“ adp”号码,并且只能在推销员中输入号码。

Dropdown

在进行此更改之前,我只是在forms.py中的字段下有 adp_number ,而不是ForeignKey,这使我无法与包含以下内容的Salesman模型进行交叉检查所有有效的 adp_number

我尝试也不遵循Django: using ForeignKeyRawIdWidget outside of admin forms,因为我也没有使用admin,但是一旦将字段设置为小部件,它就完全停止在页面上显示,我不确定需要更改什么。

forms.py

class WarehouseForm(AppsModelForm):
    class Meta:
        model = EmployeeWorkAreaLog
        widgets = {
            'adp_number': ForeignKeyRawIdWidget(EmployeeWorkAreaLog._meta.get_field('adp_number').remote_field, site),
        }
        fields = ('work_area', 'station_number')

models.py

class EmployeeWorkAreaLog(models.Model):
    employee_name = models.CharField(max_length=25)
    adp_number = models.ForeignKey(Salesman, on_delete=models.SET_NULL, help_text="Employee #", null=True, blank=False)
    work_area = models.ForeignKey(WorkArea, on_delete=models.SET_NULL, null=True, blank=False, help_text="Work Area", related_name="work_area")
    station_number = models.ForeignKey(StationNumber, on_delete=models.SET_NULL, null=True, help_text="Station", related_name="stations", blank=True)

enter_exit_area.html

{% extends "base.html" %}
{% block main %}
    <form id="warehouseForm" action="" method="POST" data-stations-url="{% url 'operations:ajax_load_stations' %}" novalidate >
        {% csrf_token %}
        <div>
            <div>
                {{ form.adp_number.help_text }}
                {{ form.adp_number }}
            </div>
            <div>
                {{ form.work_area.help_text }}
                {{ form.work_area }}
            </div>
            <div>
                {{ form.station_number.help_text }}
                {{ form.station_number }}
            </div>
        </div>

        <div>
            <div>
                <button type="submit" name="enter_area" value="Enter">Enter Area</button>
                <button type="submit" name="leave_area" value="Leave">Leave Area</button>
            </div>
        </div>
    </form>
{% endblock main %}

0 个答案:

没有答案