Слияние запросов Django

#python #django #django-models #model #django-forms

#python #django #django-модели #Модель #django-формы

Вопрос:

У меня есть два класса моделей на «models.py «досье. Signup amp; Notes

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

# Create your models here.
class Signup(models.Model):
    user = models.ForeignKey(User, on_delete=models.CASCADE)
    contact = models.CharField(max_length=10, null=True)
    branch = models.CharField(max_length=30)
    campus = models.CharField(max_length=30)
    role = models.CharField(max_length=15)

    def __str__(self):
        return self.user.username


class Notes(models.Model):
    user = models.ForeignKey(User, on_delete=models.CASCADE)
    uploadingdate = models.CharField(max_length=30)
    branch = models.CharField(max_length=30)
    subject = models.CharField(max_length=30)
    topic = models.CharField(max_length=200)
    notesfile = models.FileField(null=True)
    filetype = models.CharField(max_length=30)
    description = models.CharField(max_length=300, null=True)
    status = models.CharField(max_length=15)


def __str__(self):
    return self.user.username   " "   self.status
 

в моей функции я использую notes = Notes.objects.all() amp; users = User.objects.all() для их получения.

вот функция

 def indexnotes(request):

    notes = Notes.objects.all()
    users = User.objects.all()
    d = {'notes' : notes,'users' : users}
    return render(request,'indexnotes.html',d)
 

Я использую цикл for для отображения значений в таблице данных. Код выглядит следующим образом

 <tbody >
        {% for i in notes %}
        <tr>
            <td>{{forloop.counter}}</td>
             <td>{{i.user.first_name}} {{i.user.last_name}}</td>
             <td>{{i.uploadingdate}}</td>
            <td>{{i.campus}}</td>
            <td>{{i.subject}}</td>
            <td><a href="{{i.notesfile.url}}" class="btn btn-success" download>Download</a></td>
            <td>{{i.filetype}}</td>
            <td>{{i.description}}</td>
            <td>{{i.status}}</td>
            <td><a href="{% url 'assign_status' i.id %}" class="btn btn-success" >Assignamp;nbsp;Status</a></td>
            <td><a href="{% url 'delete_notes' i.id %}" class="btn btn-danger" onclick="return confirm('Are you sure?')">Delete</a></td>
        </tr>
        {% endfor %}

</tbody>
 

Теперь проблема в том, что некоторое значение таблицы взято из users . По мере выполнения цикла for notes .. в таблице данных не отображаются некоторые значения, полученные из users Users таблицы AKA. Но я также хочу их показать. Я пытался объединить user amp; notes , но, к сожалению, не сработало.

Я новичок в Django. Любые предложения будут рассмотрены. Заранее спасибо.

Комментарии:

1. Ваш вопрос мне неясен; вы пытаетесь показать User s и Note s в одной таблице или пытаетесь получить User атрибуты из соответствующих Note ?

2. @etnguyen03 да, вы правы.. Я хочу получить все атрибуты «Пользователя», такие как «кампус», «роль» — из соответствующей «Заметки».

Ответ №1:

внесите следующие изменения в свои представления

 def indexnotes(request):
    notesid = []
    notesuploadingdate = []
    notescampus = []
    notessubject = []
    notesfileurl = []
    notesfiletype = []
    notesdesc = []
    notesstatus = []
    usernames = []
    notes = Notes.objects.all()
    for note in notes:
        notesid.append(note.id)
        notesuploadingdate.append(note.uploadingdate)
        notescampus.append(note.campus)
        notessubject.append(note.subject)
        notesfileurl.append(note.notesfile.url)
        notesfiletype.append(note.filetype)
        notesdesc.append(note.descriprion)
        notesstatus.append(note.status)
        user = User.objects.get(username=str(note.user))
        name = user.first_name   user.last_name
        usernames.append(name)
    pack = zip(notesid, notesuploadingdate, notescampus, notessubject, notesfileurl, notesfiletype, notesdesc, notesstatus, usernames)
    d = {'data': pack}
    return render(request,'indexnotes.html',d)
 

ваш html будет выглядеть так

 <tbody >
        {% for i in data %}
        <tr>
            <td>{{forloop.counter}}</td>
             <td>{{ i.8 }}</td>
             <td>{{ i.1 }}</td>
            <td>{{ i.2 }}</td>
            <td>{{ i.3 }}</td>
            <td><a href="{{ i.4 }}" class="btn btn-success" download>Download</a></td>
            <td>{{ i.5 }}</td>
            <td>{{ i.6 }}</td>
            <td>{{ i.7 }}</td>
            <td><a href="{% url 'assign_status' i.0 %}" class="btn btn-success" >Assignamp;nbsp;Status</a></td>
            <td><a href="{% url 'delete_notes' i.0 %}" class="btn btn-danger" onclick="return confirm('Are you sure?')">Delete</a></td>
        </tr>
        {% endfor %}

</tbody>