ここではQuerySet APIのドキュメントといくつかの回答を読んだことがありますが、これを理解できないようです。私はこれの背後にある概念を理解していないと思う。DjangoのManyToManyFieldから値を取得できません
だから、これは私のmodels.pyです:
class Categoria(models.Model):
TODOS = 'Todos'
VEICULO = 'Veiculo'
EQUIPAMENTO = 'Equipamento'
SERVICO = 'Servico'
OUTRO = 'Outro'
CATEOGRY_CHOICES = (
(TODOS, 'Todos'),
(VEICULO, 'Veiculo'),
(EQUIPAMENTO, 'Equipamento'),
(SERVICO, 'Servico'),
(OUTRO, 'Outro')
)
tipo = models.CharField(max_length=15, choices=CATEOGRY_CHOICES, default=TODOS)
def __str__(self):
return self.tipo
class Anuncio(models.Model):
titulo = models.CharField(max_length=50)
anuncio = models.TextField(max_length=200)
preco = models.DecimalField(max_digits=6, decimal_places=2)
contato = models.CharField(max_length=30)
publicacao = models.DateTimeField()
categoria = models.ManyToManyField(Categoria)
def __str__(self):
return self.titulo
その後、私は、ビューにこの辞書を送信:
{ 'anuncios' : Anuncio.objects.all()
そして、これは私が値を表示する方法である:
{% for item in anuncios %}
<div class="col-sm-6 col-md-4">
<div class="thumbnail">
<h3>{{ item.titulo }}</h3>
<p>{{ item.anuncio }}</p>
<address>{{ item.contato }}</address>
<h6><a href="#">{{ item.categoria.all.values }}</a></h6>
</div>
</div>
{% endfor %}
しかし、私はそのManyToManyFieldから正しい値を得ることができません。 item.categoria
を使用すると、lista.Categoria.None
(listaはアプリの名前)となります。 item.categoria.all
を使用した場合は<QuerySet [<Categoria: Servico>]>
となります。 item.categoria.all.values
を使用すると、<QuerySet [{'id': 7, 'tipo': 'Servico'}]>
となります。私が本当に望むのは、この場合、「Servico」という言葉だけです。
また、何かをフィルタリングしようとすると、TemplateSyntaxError at /
にメッセージCould not parse the remainder:
が表示されます。
それがうまくいって、なぜ、感謝しました! –