Я пытаюсь получить объект авторизованного пользователя в Django? Этот список, который был создан во время form.save пользователя, который вошел в - PullRequest
0 голосов
/ 28 июня 2018

Здравствуйте, я уже писал здесь, прежде чем я впервые в django python нуждается в некоторой помощи о том, как получить объекты пользователя, который в данный момент вошел в систему. У меня есть приложение с именем store, которое содержит модели с именем Store. Я просто хочу собрать список магазинов, созданных пользователем. Нужно ли что-то добавлять в setting.py?

Я действительно запутался в этом. Я также попытался использовать request.user и попытался отфильтровать объект, но я не смог этого сделать. Я размещаю свой код здесь, пожалуйста, просмотрите его и дайте мне знать.

Дайте мне знать, если вам нужно что-то еще понять.

views.py из магазинов приложение

from django.shortcuts import render, redirect
from django.contrib.auth.decorators import login_required
from .forms import NewStore
from .models import Store


def store(request):
    form = NewStore()
    if request.method == 'POST':
        form = NewStore(request.POST)
        if form.is_valid():
            form = form.save()

            return redirect('stores_list')

        else:
            form = NewStore()
    return render(request, "default/store.html", {'form': form})


@login_required()
def stores_list(request):
    my_stores = Store.objects.all()
    print(my_stores)
    return render(request, "default/stores_list.html", {'my_list': my_stores})

models.py из магазинов приложений

from django.db import models
from django.contrib.auth import get_user_model

User = get_user_model()


class Store(models.Model):
    id = models.AutoField(primary_key=True)
    name = models.CharField(max_length=30)
    lat = models.DecimalField(max_digits=50, decimal_places=20)
    long = models.DecimalField(max_digits=50, decimal_places=20)
    type = models.CharField(max_length=30)
    user = models.ForeignKey(User, on_delete=models.CASCADE, null=True)

    def __str__(self):
        return self.name

stores_list.html

{% extends 'default/base.html' %}
<html>
<head><title>E-Commerce App</title></head>
{% block content %}
    <h1>Welcome to your profile</h1>
    <h2>Stores List</h2>
    <p>This is your store list</p>

    <ul>
        {% for s in my_list %}
        <li> Store {{ s.id }}: {{ s.name }}  </li>
    {% endfor %}
    </ul>
 {% endblock %}
</html>

Ответы [ 2 ]

0 голосов
/ 28 июня 2018

Изменить это

    if request.method == 'POST':
        form = NewStore(request.POST)
        if form.is_valid():
            form = form.save()
            return redirect('stores_list')

до

    if request.method == 'POST':
        form = NewStore(request.POST)
        if form.is_valid():
            entry = form.save(commit=False)
            # Attach logged-in user details with the 'store' entry
            entry.user = request.user
            entry.save()
            return redirect('stores_list')

Чтобы получить список магазинов , созданный под вошедшим пользователем, используйте

logged_in_user = request.user
store_list = Store.objects.filter(user=logged_in_user)
0 голосов
/ 28 июня 2018

Вам необходимо отфильтровать все магазины, принадлежащие текущему пользователю:

@login_required()
def stores_list(request):
    my_stores = Store.objects.all().filter(user=request.user)
    print(my_stores)
    return render(request, "default/stores_list.html", {'my_list': my_stores})
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...