我对Django还是比较陌生,但是我决定尝试建立自己从事过的个人项目的个人作品集。我已经设置好了,以便您进入主页。从那里,您可以单击一种语言。然后,如果我使用了该语言的框架,则想在屏幕上显示它,或者如果我有一个项目,但我没有使用该语言的框架,那么它也会在此处显示。为此,我设置了从框架到语言以及从JobNoFramework到Language的外键。我已经为Django测试了一个框架对象。如果将比较运算符更改为!=
,它将显示出来,但是一旦我将其设为==
,它就不起作用,即使我说{{frameworks.language}} - {{languages.language}}
也可以使用Python-Python。非常感谢您的帮助。
以下是相关代码:
型号:
from django.db import models
from datetime import date
# Create your models here.
class Language(models.Model):
language = models.CharField(max_length = 30)
image = models.ImageField(upload_to='images/')
def __str__(self):
return self.language
class Framework(models.Model):
framework = models.CharField(max_length = 30)
language = models.ForeignKey(Language, on_delete=models.CASCADE)
def __str__(self):
return self.framework
class JobNoFramework(models.Model):
job = models.CharField(max_length=30)
language = models.ForeignKey(Language, on_delete=models.CASCADE)
image = models.ImageField(upload_to='images/')
summary = models.CharField(max_length=200)
submissionDate = models.DateField(default = date.today, blank = True)
def __str__(self):
return self.job + "\n" + self.summary
class JobYesFramework(models.Model):
job = models.CharField(max_length=30)
framework = models.ForeignKey(Framework, on_delete=models.CASCADE)
image = models.ImageField(upload_to='images/')
summary = models.CharField(max_length=200)
submissionDate = models.DateField(default = date.today, blank = True)
def __str__(self):
return self.job + "\n" + self.summary
观看次数:
from django.shortcuts import render, get_object_or_404
from .models import Framework, Language, JobNoFramework, JobYesFramework
# Create your views here.
def home(request):
languages = Language.objects
return render(request, 'jobs/home.html',{'languages':languages})
def lang_detail(request, lang_id):
language = get_object_or_404(Language, pk=lang_id)
projects = JobNoFramework.objects
frameworks = Framework.objects
return render(request, 'jobs/language.html', {'languages':language, "projects":projects, "frameworks":frameworks})
模板:
<div class="row">
{% for frameworks in frameworks.all %}
{% if frameworks.language == languages.language %} <!-- need help with this line -->
<div class="col-md-4">
<div class="card mb-4 box-shadow">
<img class="card-img-top" src="{{ frameworks.image.url }}"> <!-- need to add image field -->
</a>
<div class="card-body">
<center>
<p class="card-text">{{ frameworks.framework }}</p>
</center>
</div>
</div>
</div>
{% endif %}
{% endfor %}
</div>
答案 0 :(得分:1)
您的情况应该是:
frameworks.language.language == languages.language
当您执行{{frameworks.language}} - {{languages.language}}
时,您已将frameworks.language
转换为字符串,这就是为什么它显示“ Python-Python”的原因。在您的情况下,尽管您正在将对象Language与字符串进行比较,但这当然总是错误的。