#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>