簡體   English   中英

Django:在模板中顯示模型的外鍵

[英]Django: displaying a foreign key of a model in template

這是一個相當基本的問題(我是Django的新手),我無法在模板中顯示外鍵。 我有這個模型,它在Job模型中具有“雇主”作為ManyToManyField:

from django.db import models

# Create your models here.
class Employer(models.Model):
    id = models.AutoField(primary_key=True)
    name = models.CharField(max_length=50,default="")
    business = models.CharField(max_length=25, default="")
    team = models.IntegerField()
    about = models.TextField(max_length=1000)
    country =  models.CharField(max_length=25, default="")
    city = models.CharField(max_length=25, default="")


class Job(models.Model):
    date = models.DateTimeField(auto_now_add=True, blank=True)
    specialism = models.CharField(max_length=25)
    employer = models.ManyToManyField(Employer)

我嘗試獲取所有包含“計算機”專業知識的工作:

from django.shortcuts import render
from .models import Job, Employer

# Create your views here.
def index(request):
    return render(request, 'pages/index.html')

def post_list(request):

    jobs = Job.objects.all().filter(specialism="Computers")
    return render(request, 'wall.html',{'jobs':jobs})

對於每項工作,我想在模板中顯示雇主名稱:

<!DOCTYPE html>
<html>
<head>
    <title></title>
</head>
<body>
    <center><h1>WALL</h1></center>
{% block content %}
{{jobs.count}}
{% for job in jobs %}
    <h2>specialism :{{job.specialism}} employer: {{job.employer.name}}</h2>
{% endfor %}
{% endblock %}
</body>
</html>

我得到None作為job.employer.name的值。 那么我該如何顯示每項工作的雇主名稱?

那是因為您沒有使用foriegn鍵,而是使用了許多字段

如果工作只有一位雇主,請嘗試此操作

employer = models.ForeignKey(Employer)

您需要使用ForeignKey而不是ManyToManyField

Job模型更改為以下

class Job(models.Model):
    date = models.DateTimeField(auto_now_add=True, blank=True)
    specialism = models.CharField(max_length=25)
    employer = models.ForeignKey(Employer)

說明

考慮以下模型

class Company(model.Model):
    name = models.CharField(max_length=128)

class AppliancePart(models.Model):
    name = models.CharField(max_length=25)
    company = models.ForeignKey(Company)

class Appliance(models.Model):
    name = models.CharField(max_length=25)
    company = models.ManyToManyField(Company)

在上面的模型中,一個AppliancePart只能屬於一個Company但是一個Company可以制造一個以上的AppliancePart 就像我們所說的ApplianceAppliance可以由一個或多個Company制造的零件構成,因此關系是many appliances <--> many companies

請參閱此答案以獲取更多信息

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM