gpt4 book ai didi

python - 如果对象存在,Django 过滤并显示在模板中

转载 作者:太空宇宙 更新时间:2023-11-03 21:38:16 25 4
gpt4 key购买 nike

模型.py:

class Level(models.Model):
number = models.IntegerField()
badge = models.ImageField()
locked_badge = models.ImageField()
timestamp=
models.DateTimeField(auto_now_add=True,auto_now=False,blank=True,
null=True)
unlock = models.CharField(max_length=10,default="A")

def __str__(self):
return str(self.number)
def get_absolute_url(self):
return reverse('student:level-detail', kwargs={'pk': self.pk})

class ToDo(models.Model):
level = models.ForeignKey(Level, on_delete=models.CASCADE)
name = models.CharField(max_length=150)
description = models.TextField()
timestamp =
models.DateTimeField(auto_now_add=True,auto_now=False,blank=True,
null=True)

def __str__(self):
return self.name


class PostManager(models.Manager):
def active(self, *args, **kwargs):
#Post.objects.all() = super(PostManager, self).all()
return super(PostManager,
self).filter(draft=False).filter(publish__lte=timezone.now())



class Task(models.Model):
level = models.ForeignKey(Level, on_delete=models.CASCADE)
todo = models.ForeignKey(ToDo, on_delete=models.CASCADE)
student = models.ForeignKey(User, on_delete=models.CASCADE)
title = models.CharField(max_length=150)
content = models.TextField()
timestamp = models.TimeField(auto_now=True)
datestamp = models.DateField( auto_now=True)
like =
models.ManyToManyField(User,related_name='user_likes',blank=True)
is_verified=models.BooleanField(default=False,blank=True)

def __str__(self):
return self.title

def get_absolute_url(self):
return reverse('student:dashboard')
objects = PostManager()

@property
def comments(self):
instance = self
qs = Comment.objects.filter_by_instance(instance)
return qs

@property
def get_content_type(self):
instance = self
content_type =
ContentType.objects.get_for_model(instance.__class__)
return content_type

我的观点.py:

@login_required(login_url='/account/login/')
def StudentLevelDetailView(request,pk=None):

if not request.user.is_client:
return HttpResponse("You are in trainer account")

else:
Client=ClientProfile.objects.get(user=request.user)
subscription=Client.subscription
instance = get_object_or_404(Level, pk=pk)

todos=ToDo.objects.filter(level=instance)
tasks=Task.objects.filter(todo=todos,level=instance)


notifications =
Notification.objects.exclude(sender=request.user)
.filter(receiver=request.user).order_by('-timestamp')
acceptnotify = Addnotify.objects
.filter(receiver=request.user).order_by('-timestamp')
follownotify = FollowNotify.objects
.filter(receiver=request.user).order_by('-timestamp')
hubnotifications = HubNotify.objects
.filter(receiver=request.user).order_by('-timestamp')
newnotifications = int(
Notification.objects.exclude(sender=request.user)
.filter(receiver=request.user, viewed=False).count() +
FollowNotify.objects.exclude(sender=request.user)
.filter(receiver=request.user, viewed=False).count() +
HubNotify.objects.exclude(sender=request.user)
.filter(receiver=request.user, viewed=False).count() +
Addnotify.objects.exclude(sender=request.user)
.filter(receiver=request.user, viewed=False).count())

global is_paid_member
global is_paid_fellow
context = {
'paidmember':is_paid_member,
'paidfellow': is_paid_fellow,
'task': instance,
'tasks':tasks,
'notifications': notifications,
'newnotify': newnotifications,
'completed':False,
'subscription': subscription,
'hubnotify': hubnotifications,
'acceptnotify': acceptnotify,
'follownotify': follownotify,
}

return render(request,'task_list.html',context)

模板:

 {% for obj in task.todo_set.all %}
<div class="card">
<div class="card-header" id="headingOne">
<h5 class="mb-0">
<button style="width: 100%;" class="btn" data-
toggle="collapse" data-target="#{{ obj.id }}" aria-expanded="true">
#Only display based on condition
<span class="mytaskbutton"><i class="fas fa-check"></i>
</span></i> &nbsp;
{{ obj.name }}
</button>
</h5>
</div>

<div id="{{ obj.id }}" class="collapse" aria-
labelledby="headingOne" data-parent="#accordion">
<div class="card-body">
{{ obj.description }}
<div>
<a data-click="swal-taskcompleted" href="{% url 'student:task-
form' task.id obj.id %}" style="width: 100%;" type="button"
class="btn btn-primary">Proceed</a>
</div>
</div>
</div>
</div>
{% endfor %}

填写表单后保存任务:

@login_required(login_url='/account/login/')
def TaskCreateView(request,pk,todo_id):
if not request.user.is_authenticated:
return redirect('accounts:index')
elif User.objects.filter(pk=request.user.pk,
mentor__isnull=True).exists():
instance = get_object_or_404(Level, pk=pk)
sweetify.error(request, 'You have not added a trainer yet')
print("TRAINER ILADA")


return HttpResponseRedirect(instance.get_absolute_url())
else:
instance = get_object_or_404(Level, pk=pk)
qs = instance.todo_set.get(id=todo_id)
#user = Task.objects.filter(student=request.user)
todo = Task.objects.filter(todo=qs, student=request.user)

print("TODO COUNT",todo.count())

if todo.exists():
print("TODO COUNT ALRAESY EXISTA", todo.count())
messages.error(request, 'You already completed this task')
return redirect('student:level-detail',pk=instance.id)

form = StudentTaskForm(request.POST or None, request.FILES or None)

if form.is_valid():
form.instance.user = User.objects.get(id=request.user.id)

obj = form.save(commit=False)
obj.student = request.user
obj.todo = qs
obj.level = instance
obj.save()



ImageFormSet = modelformset_factory(Images,
form=ImageForm,min_num=0,
max_num=3,
validate_min=True,extra=3)

if request.method == 'POST':
formset = ImageFormSet(request.POST, request.FILES,
queryset=Images.objects.none())
if formset.is_valid():
for form in formset.cleaned_data:
try:
image = form['image']

Images.objects.create(post=todo[0],image=image)
except KeyError:
pass
return redirect('student:dashboard')
else:
formset = ImageFormSet(queryset=Images.objects.none())

notifications =
Notification.objects.exclude(sender=request.user)
.filter(receiver=request.user)
newnotifications = int(
Notification.objects.exclude(sender=request.user)
.filter(receiver=request.user, viewed=False).count() +
FollowNotify.objects.exclude(sender=request.user)
.filter(receiver=request.user, viewed=False).count() +
HubNotify.objects.exclude(sender=request.user)
.filter(receiver=request.user, viewed=False).count() +
Addnotify.objects.exclude(sender=request.user)
.filter(receiver=request.user, viewed=False).count())

hubnotifications=HubNotify.objects
.filter(receiver=request.user).order_by('-timestamp')
acceptnotify = Addnotify.objects
.filter(receiver=request.user).order_by('-timestamp')
follownotify = FollowNotify.objects
.filter(receiver=request.user).order_by('-timestamp')
counts=int(todo.count())

context={
'form': form,
"qs": qs,
'todo':todo,
'formset': formset,
'notifications': notifications,
'hubnotify': hubnotifications,
'newnotify': newnotifications,
'acceptnotify': acceptnotify,
'follownotify': follownotify,

}


return render(request,'task_form.html',context)

StudentTaskForm 是一个模型表单。将模型作为任务

我有 3 个模型。待办事项、级别和任务。每个级别都包含许多“待办事项”。任务基本上都是todo完成的。因此,如果待办事项完成,它将保存为任务。如果“待办事项”已完成,即该“待办事项”保存为任务,我希望显示“待办事项”列表中的检查图标。仅当此待办事项完成时,才应显示带有“fas fa-check”类的图标。 “待办事项”显示为列表。在模板中,关卡作为“任务”传递...因此关卡中的所有“待办事项”均由 task.todo_set.all 拉取...我想要任务中也包含的“待办事项”基本上是所有已完成的待办事项都有检查

最佳答案

  tasks = Task.objects.filter(student=request.user,level=instance).only("todo")
list=[]
for task in tasks:
list.append(task.todo)

这对我有用。我将过滤后的任务中的所有待办事项添加到列表中,然后将此列表传递给模板。然后我就必须比较

 {% if obj in list %}
#display check
{% endif %}

关于python - 如果对象存在,Django 过滤并显示在模板中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53105889/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com