如何在Django中显示相关对象?

时间:2019-12-19 22:49:31

标签: python html django

我有三个模型:PorumbeiConcursuriRezultate。我有一些 Porumbei ,我创建了同意A Rezultate B

Rezultate模型通过porumbelul与Porumbei相关联(manytoManyField,许多rezultate中可以有一个porumbel,而Rezultate可以具有更多porumbei)。

我希望页面将Rezultate的详细信息显示为表格,并且如何显示属于该Concursuri和相同Rezultate的每个Porumbei? Rezultate通过concursul(onetoonefield)与Concursuri相关联。

我的模特:

class Porumbei(models.Model):
    id_porumbel = models.AutoField(primary_key=True)
    data_adaugare = models.DateTimeField(default=timezone.now, null=True, blank=True)
    crescator = models.ForeignKey(get_user_model(), on_delete=models.CASCADE, null=True, blank=True,
                              related_name='porumbeii')
    serie_inel = models.CharField(max_length=25, null=False, blank=False, unique=True,
                              help_text="Seria de pe inel. Ex: RO 123456")
    anul = models.CharField(max_length=4, null=False, blank=False)
    ....

class Concursuri(models.Model):
    crescator = models.ForeignKey(settings.AUTH_USER_MODEL, on_delete=models.CASCADE, null=True, blank=True, related_name='concursurile')
    sezon = models.CharField(max_length=4, default=timezone.now().year, null=True, blank=True)
    cod_concurs = models.CharField(max_length=8, primary_key=True, unique=True)
    tip_concurs = models.CharField(max_length=12, choices=TIPURI_CONCURS)
    categorie_concurs = models.CharField(max_length=10, choices=CATEGORII)
    data_lansare = models.DateField(null=False, blank=False)
    ....

class Rezultate(models.Model):
    crescator = models.ForeignKey(settings.AUTH_USER_MODEL, on_delete=models.CASCADE, null=True, blank=True)
    concursul = models.OneToOneField(Concursuri, on_delete=models.CASCADE, related_name="concursul")
    porumbelul = models.ManyToManyField(Porumbei)
    sosire = models.DateTimeField(blank=False)
    zi_concurs = models.PositiveIntegerField(blank=False, default=1)
    timp_zbor = models.DateTimeField(blank=False)
    viteza = models.CharField(max_length=15, blank=False)
    penalizare = models.FloatField()

我的观点:

def viewrezultate(request):
    # Variabile folosite in tabelul de afisare rezultate
    rezultate = Rezultate.objects.filter(crescator=request.user)
    concursuri = Concursuri.objects.filter(crescator=request.user)
    porumbei = Porumbei.objects.filter(crescator=request.user)

    context = {
        'rezultate': rezultate,
        'concursuri': concursuri,
        'porumbei': porumbei,
    }
    template = loader.get_template("rezultate.html")
    return HttpResponse(template.render(context, request))

在模板中,如果我渲染{{rezultate.porumbelul}},则会得到一个空列表(porumbei.Porumbei.None)。相反,我想显示porumbei.serie_inel(表中新行中的每个serie_inel)。

有人知道我该怎么做到吗?预先感谢!

0 个答案:

没有答案