- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
在用户删除一个 PieceInstance 后,我想将他重定向到 PieceInstance 所属的 Piece。我使用默认的 DeleteView 并希望将 Piece id(通过 ForeignKey 引用的 PieceInstance 的 Piece)传递给 get_success_url 方法。 self.piece.pk
好像没有获取到对应Piece的id。
模型.py
class PieceInstance(models.Model):
id = models.UUIDField(primary_key=True, default=uuid.uuid4, help_text='Unique ID for this particular Piece across whole system')
piece = models.ForeignKey('Piece', on_delete=models.SET_NULL, null=True)
...
class Piece(models.Model):
title = models.CharField(max_length=200)
...
views.py
class PieceInstanceDelete(LoginRequiredMixin, DeleteView):
model = PieceInstance
def get_success_url(self):
return reverse_lazy('piece-detail', kwargs={'pk': self.piece.pk})
urls.py
path('piece/<int:pk>', views.PieceDetailView.as_view(), name='piece-detail')
最佳答案
根据源代码,对象在被删除之前存储在 self.object
中。因此,您可以重定向到相关 piece
的主键:
class PieceInstanceDelete(LoginRequiredMixin, DeleteView):
model = PieceInstance
def get_success_url(self):
return reverse_lazy('piece-detail', kwargs={'pk': <b>self.object.piece_id</b>})
然而,问题是这是未记录的,因此 Django View 稍后可能会在没有此类行为的情况下被重写。
如果此行为不再发生,可能值得修补 delete
函数:
# probably not necessary, but there is no "contract" that the above will
# always work
class PieceInstanceDelete(LoginRequiredMixin, DeleteView):
model = PieceInstance
def delete(self, *args, **kwargs):
<b>self.object = self.get_object()</b>
super().delete(*args, **kwargs)
def get_success_url(self):
return reverse_lazy('piece-detail', kwargs={'pk': self.object.piece_id})
关于python - Django:DeleteView 将外键模型中的参数传递给 get_success_url,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52065046/
我有 2 个部分,一个用于普通用户,一个用于管理员(与 Django 管理无关)。例如,我有一个产品模型。 在模型中,我使用 get_absolute_url 为普通用户设置详细 url。 Produ
设置 我的应用中有两个模型。一个用于期刊,另一个用于该期刊的条目。我写了一个 CreateView 类,它允许用户为当前位于的任何 Journal id 创建一个 Journal 条目。理想情况下,我
目前,我有一个看起来像这样的表格: class SelectBoard(generic.FormView): form_class = forms.SelectBoard def fo
在用户删除一个 PieceInstance 后,我想将他重定向到 PieceInstance 所属的 Piece。我使用默认的 DeleteView 并希望将 Piece id(通过 ForeignK
在使用食谱的 Django 应用程序中,我将 DeleteView 子类化创建我的 IngredientListItemDeleteView ,但我想要 get_success_url 的结果依赖于刚
我正在尝试为 CreateView 中的 get_success_url 方法编写测试,以确保它重定向到新创建的页面。但是响应状态代码是 405,而不是我预期的 302。 View .py class
如果表单有效,我有 FormView 重定向到上一页。这很好,但我如何告诉用户该信息已发布?我希望他在重定向后在模式窗口中看到成功消息。 我尝试通过 get_success_url 中的 reques
from django.contrib.auth.decorators import permission_required from django.utils.decorators imp
我是一名优秀的程序员,十分优秀!