Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
当我试图更新模型对象时,Django的NoReverseMatch_Django - Fatal编程技术网

当我试图更新模型对象时,Django的NoReverseMatch

当我试图更新模型对象时,Django的NoReverseMatch,django,Django,我正在编写一个视图以更新数据库中的记录,当我尝试切换到记录进行编辑时,出现错误: 错误: 我从另一个模型的现有视图一对一地编写,因此我不理解错误是什么。我怎样才能解决这个问题 url.py path( 'keys/<int:key_id>/', views.UpdateKeyView.as_view(), name='update_key' ), class CreateKeyView( SuccessMessageMixin, Cust

我正在编写一个视图以更新数据库中的记录,当我尝试切换到记录进行编辑时,出现错误:

错误:

我从另一个模型的现有视图一对一地编写,因此我不理解错误是什么。我怎样才能解决这个问题

url.py

 path(
    'keys/<int:key_id>/',
    views.UpdateKeyView.as_view(),
    name='update_key'
),
class CreateKeyView(
    SuccessMessageMixin,
    CustomPermissionRequired,
    CreateView
):

    model = ApiKey

    template_name = 'db_visual/create_key.html'

    form_class = KeyForm

    permission_required = (
        'db_visual.add_keys',
    )

    success_message = "Ключи %(description)s успешно создан!"

    def get_success_url(self):
        print(self.object.id)
        return reverse_lazy(
            'update_key',
            kwargs={'key_id': self.object.id}
        )


  class UpdateKeyView(
    SuccessMessageMixin,
    CustomPermissionRequired,
    UpdateView
):
    model = ApiKey
    pk_url_kwarg = 'key_id'

    template_name = 'db_visual/update_key.html'

    form_class = KeyForm
    success_url = reverse_lazy('keys')

    permission_required = (
        'db_visual.change_key',
    )

    success_message = "Ключ <a href='%(url)s'>%(description)s</a> " \
                      "успешно изменен!"

    def get_success_message(self, cleaned_data):
        return self.success_message % dict(
            cleaned_data,
            url=reverse_lazy(
                'update_key',
                kwargs={'key_id': self.object.id}
            ),
        )
{% for key in api_keys %}
        <tr>
            <td class="min-col">
            <a href="{% url 'update_key' key_id=key.id %}">
                    {{ key.description}}
            </a>
            </td>
            <td class="min-col">{{ key.open_key }}</td>
            <td class="min-col">{{ key.secret_key }}</td>
            <td class="min-col">
                <a class="btn btn-sm btn-link"
                   href="{% url 'update_key' key_id=key.id %}">
                    <i class="far fa-edit fa-lg"></i>
                </a>
        </tr>
    {% endfor %}
<form action="{% url 'update_key' key_id=key.id %}"
      method="post" class="col-12" id="key_form">
    {% csrf_token %}
    <div class="card">
        <h2 class="card-header">
            <div class="row">
                <div class="col-6">
                    Ключи для {{ key.description }}
                </div>
            </div>
        </h2>
        <div class="card-body">
            {% include 'db_visual/key_form_body.html' %}
        </div>
        <div class="card-footer text-muted">
            <input type="submit" class="btn btn-primary" value="Сохранить"/>
        </div>
    </div>
</form>
class ApiKey(models.Model):
    open_key = models.CharField(max_length=128)
    secret_key = models.CharField(max_length=128)
    description = models.CharField(max_length=128)
    restrict_ip = models.BooleanField()
    ip = ArrayField(
        models.CharField(max_length=32, blank=False, null=True), size=8, blank=True, null=True
    )
    valid_to_date = models.DateField()
    restrict_methods = models.BooleanField()
    allowed_methods = ArrayField(
        models.CharField(max_length=32, blank=True, null=True),
        size=8, blank=True, null=True
    )
    forbidden_methods = ArrayField(
        models.CharField(max_length=32, blank=True, null=True),
        size=8, blank=True, null=True
    )

    class Meta:
        db_table = '"processing"."api_key"'
UPD:当我创建新对象并尝试执行函数
get\u success\u url
时,它会得到相同的错误,但是
self.object.id
中没有


UPD2:发现模型对象没有传递给
update\u key
,但不清楚原因。

错误是在对象的名称中…

是否确定所有
ApiKey
对象都有
id
?在我看来,视图中的key\u id包含一个空字符串-但视图正在寻找一个整数值,所以它不匹配。@PedramParsian,是的,我确定。@ger.s.brett,你能帮我解决这个问题吗?你能添加模型的代码吗?