1
나는 자신을 위해 할 일 목록 응용 프로그램을 작성하고 있으며 장고에 익숙해지기 쉽고 모든 것이 복잡하고 복잡합니다.하나의 템플릿에 다 대다 관계를 모두 표시합니다.
한 번에 하나 이상의 목록에 항목을 표시 할 수 있도록 목록 모델과 항목 모델간에 다 대다 관계를 사용하려고합니다.
models.py
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Home</title>
</head>
<body>
{% if lists %}
<table>
{% for list in lists %}
<!--{{ list }}
{{ list.item_set.all }}-->
{% for item in list.item_set.all %}
<tr>
<td>{{ item.field }}</td>
</tr>
<br>
{% endfor %}
{% endfor %}
</table>
{% else %}
Woops, you don't have any lists. Consider adding one.
{% endif %}
</body>
</html>
views.py이
from django.http import HttpResponse
from django.contrib.auth.models import User
from django.contrib.auth.decorators import login_required
from .models import List, Item
from .forms import ItemForm
from django.shortcuts import render, get_object_or_404
# Create your views here.
def getLists(request):
lists = List.objects.filter(canView__user__id=request.user.id).values('listName')
temp2 = dict()
for list in lists:
temp = list.get('listName')
temp2[temp] = List.objects.get(listName=temp)
return temp2
@login_required
def index(request):
lists = dict()
lists = getLists(request)
list = lists['MainList']
print(list.item_set.get(pk=1))
print(lists['MainList'].item_set.count())
return render(request, 'index.html', {'lists': lists})
그래서 내 문제는 거짓말을 보인다
from django.db import models
from django.contrib.auth.models import User
from datetime import datetime
def makeName():
return datetime.now()
# Create your models here.
class List(models.Model):
#owner = models.ForeignKey(User, on_delete=models.CASCADE)
list_create = models.DateTimeField(auto_now_add=True)
canView = models.ManyToManyField(User, blank=True, related_name='user')
listName = models.CharField(default=makeName, max_length=100)
class Item(models.Model):
list = models.ManyToManyField(List, blank=True)
field = models.TextField(max_length=100)
name = models.CharField(max_length=100)
date = models.DateTimeField('Date Made', auto_now_add=True)
completed = models.DateTimeField()
status = models.BooleanField(default=False)
index.html을 : 여기
는 관련 코드 index.html에 있습니다. 모든 목록의 모든 항목을 한 페이지에 모두 표시하려고합니다. This 반 비슷한 정도의 질문은 근본적으로 말해서 list.item_set.all을 반복하지만, 그렇게 할 때 출력이 나오지 않습니다. 데이터베이스에 항목이 채워져 있고보기에서 콘솔로 인쇄 할 때 예상 한 값이 표시됩니다. 조언이나 안내가 훌륭합니다.
왜 내가 사전을 반복 할 때 그 생각을 멈추지 않는지 전혀 알지 못합니다. 도와 주셔서 감사합니다! – moovlin