Связанное поле получило недопустимый внешний ключ поиска - PullRequest
0 голосов
/ 26 января 2020

я писал код для поля поискового запроса с внешним ключом. поэтому, когда я ищу команду устройства, я должен иметь возможность получить команду, относящуюся к этому типу устройства, но, к сожалению, она не работает

я нашел код в Интернете, я сделал аналогичный способ, но когда я ищу, он не вернуть любой результат, и моя таблица полностью пуста

Это мой код

models.py

class DeviceType(models.Model):
    devicetype = models.CharField(max_length=100)
    category = models.ForeignKey(
        Category, on_delete=models.CASCADE)

    def __str__(self):
        return self.devicetype


class DeviceTypeCommand(models.Model):
    devicetypename = models.ForeignKey(
        DeviceType, on_delete=models.CASCADE)
    command = models.ForeignKey(
        Command, on_delete=models.CASCADE)

    def __str__(self):
        return self.devicetypename

    def get_absolute_urlwork(self):
        return reverse("edit_devicetypecommand", kwargs={"id": self.id})

forms.py

class DeviceTypeCommandForm(BSModalForm):
    class Meta:
        model = DeviceTypeCommand
        fields = [
            'devicetypename',
            'command',
        ]

class DeviceTypeForm(BSModalForm):

    class Meta:
        model = DeviceType
        fields = [
            'devicetype',
            'category',
        ]

view.py

def execute_selected(request, id=None):
        instance = get_object_or_404(Device, id=id)
        form = DeviceTypeCommandSearchForm(request.POST or None)
        queryset = DeviceTypeCommand.objects.all()
        context = {
            "form": form,
             "queryset": queryset,
            }
        if request.method == 'POST':
            queryset = DeviceTypeCommand.objects.filter(devicetypename__devicetype__icontains=form['devicetypename'].value())
            context = {
            "queryset": queryset,
            "form": form,
            }
        return render(request, "selected_command.html", context)

html file

{% load static %}
{% load crispy_forms_tags %}
<!doctype html>
<html lang="en">

<head>
    <title>Mannai Co.</title>
    <link href="{% static 'assets/other/bootstrap.min.css' %}" rel="stylesheet">
    <link rel="stylesheet" href="{% static 'assets/other/stylesheet.css' %}">

</head>
<form method="post" action="">
    {% csrf_token %}
    {{form|crispy}}
    <input class="btn btn-primary" type="submit" value="Search" />
 </form>

<body id="bodylayout">
    <center class="fadeIn First">
        <br>
        <h3 style="color: #c2c1c1">Device Type Command </h3>
    </center>
    <br>
    <a class="fadeIn First" href='/createdtc/'>
        <button class="work" style="margin-left: 151px;">
            Create Device Type Command
        </button>
    </a>

    <center class="fadeIn First">


        <div style="width: 80%;">


            <table cellspacing="0" width="100%">

                <thead style="background-color: #2a3747; color: #c2c1c1;">
                    <tr>
                        <th class="th-sm">#</th>
                        <th class="th-sm">Device Type</th>
                        <th class="th-sm">Command</th>
                        <th class="th-sm">delete</th>
                    </tr>
                </thead>

                <tbody>

                    {% for instance in queryset %}
                    <tr style="background-color: #272727; color: #ffffff;">

                        <td>{{forloop.counter}}</td>
                        <td>{{instance.devicetypename}}</td>
                        <td>{{instance.command}}</td> 
                        <td> <a href='{{instance.get_absolute_urlwork}}'>
                            <button class="btn btn-primary">
                                Update
                            </button></a>
                    </td>
                    </tr>
                    {% endfor %}

                </tbody>

            </table>
        </div>
    </center>

    <script src="{% static 'js/jquery-3.4.1.slim.min.js' %}" crossorigin="anonymous"></script>
    <script>window.jQuery || document.write('<script src= "{% static "js/jquery.slim.min.js" %}"><\/script>')</script>
    <script src="{% static 'js/bootstrap.bundle.min.js' %}"
        integrity="sha384-6khuMg9gaYr5AxOqhkVIODVIvm9ynTT5J4V1cfthmT+emCG6yVmEZsRHdxlotUnm"
        crossorigin="anonymous"></script>
    <script type="text/javascript" src="{% static 'js/jquery.min.js' %}"></script>
    <script type="text/javascript" src="{% static 'js/jquery.min.js' %}"></script>
    <script type="text/javascript" src="{% static 'js/jquery.dataTables.min.js' %}"></script>
    <script type="text/javascript">

    </script>
</body>


</html>

вывод при поиске даст мне нулевой запрос и не даст результатов

Вывод перед поиском

enter image description here

вывод после нажатия кнопки поиска

enter image description here

, пожалуйста, помогите

...