Назначить объекты для конкретного пользователя в Django? - PullRequest
0 голосов
/ 21 февраля 2019

Попытка сделать так, чтобы на моей странице match.html отображалось расписание конкретного пользователя, однако, когда я вхожу в другого пользователя, данные предыдущих пользователей все еще там.Есть ли способ, которым я могу сделать данные расписания, назначенные пользователем, вошедшим в систему.

class timetablesetup(models.Model):
    module = models.CharField(max_length=150)
    day = models.CharField(max_length=100)
    time = models.IntegerField()
    location = models.CharField(max_length=100)


    def __str__(self):
        return self.module

Это мой models.py, это просмотры

def matches(request, user):
    entrys = timetablesetup.objects.all()
    context = {
        'entrys': entrys
    }
    return render(request, 'timetableMatch/matches.html', context)

def add_entry(request):
    return render(request, 'timetableMatch/add_entry.html')

def delete(request, id):
    entrys = timetablesetup.objects.get(pk=id)
    entrys.delete()
    return redirect('/timetableMatch')

def edit(request, id):
    entrys = timetablesetup.objects.get(pk=id)
    context = {
        'entrys': entrys
    }
    return render(request, 'timetableMatch/edit.html', context)

def update(request, id):
    entrys = timetablesetup.objects.get(pk=id)
    entrys.module = request.GET['module']
    entrys.day = request.GET['day']
    entrys.time = request.GET['time']
    entrys.location = request.GET['location']
    try:
        entrys.save()
    except Exception:
        return redirect('/errorpage')
    else:
        return redirect('/timetableMatch')

и вот моя страница совпаденийданные расписания просматриваются

<div class="container"><br>
    <h2>TimetableMatch</h2>
    <hr>
    <table class="table table-dark">
        <thead>
            <tr>
                <th>Modules</th>
                <th>Day</th>
                <th>Time</th>
                <th>Location</th>
                <th>Actions</th>
            </tr>
        </thead>
        <tbody>
          {% for entry in entrys %}
                <tr>
                <td>{{ entry.module }}</td>
                <td>{{ entry.day }}</td>
                <td>{{ entry.time }}</td>
                <td>{{ entry.location }}</td>
                <td><a class="btn btn-info" href="../edit/{{ entry.id }}">Edit</a>
                    <a class="btn btn-danger" href="../delete/{{ entry.id }}">Delete</a>
                </td>
            </tr>
            {% endfor %}
        </tbody>
    </table>

1 Ответ

0 голосов
/ 21 февраля 2019

Вы должны связать каждый объект TimeTableSetup с пользователем в вашей базе данных, используя ForeignKey, а затем выполнить фильтрацию в представлении совпадений, чтобы убедиться, что расписание для данного пользователя отображается:

class timetablesetup(models.Model):
    module = models.CharField(max_length=150)
    day = models.CharField(max_length=100)
    time = models.IntegerField()
    location = models.CharField(max_length=100)
    user = models.ForeignKey(<POINT TO YOUR USER MODEL HERE>)


    def __str__(self):
        return self.module

def matches(request, user):

    # Get the user whose entries you want to show here
    # E.g., user = User.objects.get(id=3)
    user = <GET THE USER HERE>

    # Filter entrys to only those assigned to a certain user
    entrys = timetablesetup.objects.filter(user=user)

    context = {
        'entrys': entrys
    }
    return render(request, 'timetableMatch/matches.html', context)
...