【发布时间】:2020-06-06 23:14:06
【问题描述】:
感谢您的宝贵时间: 我有一个与用户相关联的模型,并且唯一可以更新他的模型是他的创建者。直到一切正常。只有创建者用户可以打开 url 更新,尽管我无法在模型的主模板上传递一个按钮并重定向到该更新 url。
我想知道是否有办法让该按钮只对他的用户显示(如果不行,则只对匹配的查询集用户开放)。
或者只是为什么这个按钮不起作用:我应该获取 URL,例如:services/parceiro/update/2 如果我是创建者用户,但当我尝试设置它时,我可以打开这个 URL在一个按钮中我得到这个错误:
未找到带有参数“(”,)”的“update_parceiro2”的反向操作。尝试了 1 种模式:['services/parceiro/update/(?P[0-9]+)$']
parceiros.html:
{% extends "base.html" %}
{% block content %}
<h1>{{parc.nome}} - {{parc.user}} - {{parc.responsavel}}</h1>
<form action="{% url 'update_parceiro2' Parceiros.id %}">
<button type="submit"><i class="material-icons">sync</i></button>
</form>
{% endblock %}
views.py:
def parceirosview(request, pk=None):
parc = get_object_or_404(Parceiros, id=pk)
context = {'parc': parc}
return render(request, 'parceiro.html', context)
def get_queryset(self):
return super().get_queryset().filter(parceiro__user=self.request.user)
class ParceiroUpdate(UpdateView):
model = Parceiros
template_name = 'parceiroform.html'
fields = ['nome', 'endereco', 'responsavel', 'tel']
def get_queryset(self):
return super().get_queryset().filter(user=self.request.user)
urls.py:
urlpatterns = [
path('home/', views.home_view, name='home2'),
path('parceiro/', views.parceirosview, name='parceiro2'),
path('parceiro/detail/<int:pk>', views.parceirosview, name='parceiro_detail2'),
path('addparceiro/', views.parceiros_create, name='add_parceiro2'),
path('parceiro/detail2/<int:pk>', ParceirosView.as_view(), name='parceiro_detail22'),
path('parceiro/update/<int:pk>', ParceiroUpdate.as_view(), name='update_parceiro2')
]
models.py:
get_user_model = User
class Parceiros (models.Model):
user = models.OneToOneField(User, on_delete=models.CASCADE)
nome = models.CharField(max_length=200)
endereco = models.TextField(max_length=400, blank=True)
responsavel = models.CharField(max_length=100)
tel = PhoneField(max_length=12)
created_at = models.DateTimeField(auto_now=True)
updated_at = models.DateTimeField(auto_now_add=True, blank=True)
ativo = models.BooleanField(default=False)
def get_queryset(self):
queryset = super(Parceiros, self).get_queryset()
return queryset
def __str__(self):
return '%s %s' % (self.user, self.nome)
def get_absolute_url(self):
return reverse('parceiro_detail2', kwargs={'pk': self.pk})
【问题讨论】:
-
这个
{% url 'update_parceiro2' Parceiros.id %}应该是{% url 'update_parceiro2' parc.id %} -
kkkkk tham 是的,先生,谢谢你,我没注意到
标签: python django python-3.x django-forms django-templates