Как получить значение для конкретного пользователя из тега якоря в представлении django?
urls.py
urlpatterns = [
path('vendors/', views.loomerang_admin_vendors, name="loomerang_admin_vendors"),
path('vendor_profile/<str:userid>', views.loomerang_admin_vendor_profile, name="loomerang_admin_vendor_profile"),]
шаблон
{% for vendor in vendors %}
<tr>
<th scope="row">{{vendor.id}}</th>
<td>{{vendor.date_joined|date:"d-m-Y"}}</td>
<td name="vendor_id"><a href="{% url 'loomgerang_admin:loom_admin_vendor_profile' userid %}">{{vendor.userid}}</a></td>
<td>{{vendor.first_name}}</td>
<td>{{vendor.status}}</td>
<td>20-12-2021</td>
<td>Lokesh</td>
</tr>
{% endfor %}
views.py
def loomerang_admin_vendor_profile(request, userid):
print(request.user.userid)
vendor_name = request.POST.get("vendor_id")
basic_details = CustomUser.objects.filter(id=request.user.id)
store_details = basic_details[0].vendor_details.all()
print(store_details)
return render(request, 'loom_admin/vendor_profile.html',
{'basic_details':basic_details, 'store_details': store_details})
models.py
class CustomUser(AbstractUser):
username = None
email = models.EmailField(_('email address'), unique=True)
mobile_number = models.IntegerField(blank=False, null=True)
first_name = models.CharField(max_length=200)
last_name = models.CharField(max_length=200)
USERNAME_FIELD = 'email'
REQUIRED_FIELDS = []
customer = models.BooleanField(default=False, editable=False)
vendor = models.BooleanField(default=False, editable=False)
id = models.AutoField(primary_key=True, editable=True)
userid = models.CharField(max_length=100, unique=True, null=True)
approved_by = models.ForeignKey('self', on_delete=models.CASCADE, null=True, blank=True)
approved_date = models.DateField(null=True, blank=True)
status = models.CharField(max_length=10,choices=STATUS_CHOICES,default="Waiting")
objects = UserManager()
def __str__(self):
return str(self.userid)
Я отобразил все данные о пользователях в виде таблицы. Если я нажму на Id в одной строке, она перенаправит меня на другую страницу и я получу всю информацию о конкретном пользователе. Я не знаю, как это сделать. пожалуйста, жду ответа.
В первую очередь вы должны фильтровать по аргументу userid, передаваемому запросу, а затем получить id через forloop в шаблоне типа vendor.userid, я не знаю, чего вы пытаетесь достичь, получая vendor_name = request.POST.get("vendor_id"), у вас есть другая модель для vendor ?
def loomerang_admin_vendor_profile(request, userid):
print(request.user.userid)
vendor_name = request.POST.get("vendor_id")
basic_details = CustomUser.objects.filter(id=userid)
store_details = basic_details[0].vendor_details.all()
print(store_details)
return render(request, 'loom_admin/vendor_profile.html', {'basic_details':basic_details, 'store_details':store_details})
{% for vendor in vendors %}
<tr>
<th scope="row">{{vendor.id}}</th>
<td>{{vendor.date_joined|date:"d-m-Y"}}</td>
<td name="vendor_id"><a href="{% url 'loomgerang_admin:loom_admin_vendor_profile' vendor.userid %}">{{vendor.userid}}</a></td>
<td>{{vendor.first_name}}</td>
<td>{{vendor.status}}</td>
<td>20-12-2021</td>
<td>Lokesh</td>
</tr>
{% endfor %}