我是Django Framework的新手,我想知道是否可以通过模型Y从模型X访问一个属性...在我的例子中,有一个名为"评估"这个模型接收候选人的评分。他们有一个接收候选人的外国人(什么是另一个模型)和一个获得我想要的分数的PositiveIntegerField是通过候选模型访问这个PositiveIntegerField,它是可能的?
我的models.py:
from django.db import models
from jsonfield import JSONField
from site_.settings import MEDIA_ROOT
from django.core.validators import MaxValueValidator
class Criterion(models.Model):
label = models.CharField(max_length=100)
def __str__(self):
return self.label
class Candidate(models.Model):
name = models.CharField(max_length=100)
e_mail = models.EmailField(max_length=100, default = '')
github = models.URLField(default = '')
linkedin = models.URLField(max_length=100, default = '')
cover_letter = models.TextField(default = '')
higher_education = models.BooleanField(default = False)
docfile = models.FileField(upload_to='/home/douglas/Documentos/Django/my-second-blog/site_/media', null=True, blank=True)
def __str__(self):
return self.name
class Evaluation(models.Model):
candidate = models.ForeignKey(Candidate)
criterion = models.ForeignKey(Criterion, default='')
score = models.PositiveIntegerField(default = 0, validators=[MaxValueValidator(10)])
appraiser = models.ForeignKey('auth.User')
def __str__(self):
return str(self.candidate)
#model de teste
class Teste(models.Model):
nome = models.CharField(max_length=10)
def __str__(self):
return str(self.nome)
答案 0 :(得分:1)
您有两个解决方案来访问评估对象
示例1
candidateObj = Candidate.objects.get(id=your_candidate_id)
evaluationObjs = Evaluation.objects.filter(candidate=candidateObj)
示例2
evaluationObjs = candidateObj.evaluation_set.all()
如果您只创建一个评估对象,则直接使用
score = candidateObj.evaluation_set.get().score
希望这会对你有所帮助
答案 1 :(得分:1)
与其他答案一样,您在Django中使用backwards relation。
答案 2 :(得分:0)
您可以使用
Candidate_obj.evaluation_set.all()[0].score
由于您使用的是Foriegn Key
,因此有多个Evaluation
个对象。Candidate_obj.evaluation_set.all()
可能会有多个对象。