Кнопка обновления не получает запрос - PullRequest
0 голосов
/ 23 февраля 2020

спасибо за ваше время: у меня есть модель, которая связана с пользователем, и единственная, которая может обновить его, это его создатель. пока что работает нормально. только пользователь-создатель может открыть обновление 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 %}

просмотров .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})

1 Ответ

1 голос
/ 23 февраля 2020

Вы можете использовать этот код в своем шаблоне для отображения контента для пользователя на основе его идентификатора

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