【问题标题】:Update button not getting the query更新按钮未收到查询
【发布时间】: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


【解决方案1】:

您可以在模板中使用此代码根据用户 ID 显示内容

{% if request.user.id == 1 %}
<form action="{% url 'update_parceiro2' Parceiros.id %}">
    <button type="submit"><i class="material-icons">sync</i></button>
</form>
{% endif %}

【讨论】:

  • 请多解释。
  • 谢谢你,先生,它有效,但会像:``` {% if request.user == parc.user %}
    {% endif %} ```
猜你喜欢
  • 1970-01-01
  • 2021-11-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-09-26
  • 2014-06-26
相关资源
最近更新 更多