django - 在 Django 创建视图中传递主键
问题描述
我正在使用基于类的视图,在该视图中显示了一个表单,其信息与模型(称为 Tratamiento)相关联,该模型具有模型的外键,称为Paciente。
我的问题是,在保存治疗时,表格会显示所有可用的患者,因为我想要的行为是从列出所有患者的表格中,当我选择一个时,该患者可以添加治疗。也就是说,在一个新模板中(在这种情况下,我正在使用模态进行测试),患者是固定的,并且没有显示所有患者的下拉菜单。
这是网址:
url(r'^tratamiento/$', views.TratamientoCreateView.as_view(), name='tratamiento'),
这是我的Tratamiento模型:
class Tratamiento(models.Model):
class Meta:
ordering = ['doctorDerivador']
doctorDerivador = models.ForeignKey(DoctorDerivador, on_delete=models.CASCADE)
paciente = models.ForeignKey(Paciente, on_delete=models.CASCADE)
diagnostico = models.CharField(max_length=50, null = True, blank = True)
fechaInicioTratamiento = models.DateField()
motivoConsulta = models.CharField(max_length=100, null = True, blank = True)
fechaFinTratamiento = models.DateField(null=True, blank=True)
evaluacion = models.TextField(null=True, blank=True)
这是我的看法:
class TratamientoCreateView(BSModalCreateView):
model = Tratamiento
template_name = '../templates/tratamiento.html'
form_class = TratamientoModelForm
success_message = 'Success: Tratamiento dado de alta.'
success_url = reverse_lazy('index')
这就是发生在我身上的事情:
请您告诉我如何将主键传递给视图,因为 pk 在 url 中。我做了一些测试,但没有进一步的结果。
解决方案
您可以覆盖 dispatch 方法来检索您的特定模型:
from django.shortcuts import get_object_or_404
def dispatch(self, request, *args, **kwargs):
self.tratamiento = get_object_or_404(Tratamiento, pk=kwargs['pk'])
return super().dispatch(request, *args, **kwargs)
kwargs
有一个 pk 字段,可以在 URL 中指定
dispatch
是大多数基于类的视图中的方法,在加载视图之前调用。现在您可以在其他方法(即 get_context_data、post 等)中对模型进行操作。
推荐阅读
- mongodb-query - 按属性 child-count 对 mongo find() 结果进行排序
- java - 如何在全屏模式下隐藏任务栏 JavaFx
- node.js - 通过检查子文档中的数组(具有子文档)的值来查找用户
- angular - Angular 延迟加载会减小包大小吗?
- excel-formula - 记分卡问题第 1 部分 - 多个 IF 公式
- php - PHP psr-0 命名空间找不到类
- c# - 如何在 C# 中启动一个与非异步函数异步的函数?
- machine-learning - 如何适应神经网络权重的随机性?
- vb.net - DataGridView - ComboBoxColumn 不工作
- java - 在 getclass() 方法之后转换一个对象