相关疑难解决方法(0)

Django模板:选择的详细版本

我有一个模特:

from django.db import models

CHOICES = (
    ('s', 'Glorious spam'),
    ('e', 'Fabulous eggs'),
)

class MealOrder(models.Model):
    meal = models.CharField(max_length=8, choices=CHOICES)
Run Code Online (Sandbox Code Playgroud)

我有一个表格:

from django.forms import ModelForm

class MealOrderForm(ModelForm):
    class Meta:
        model = MealOrder
Run Code Online (Sandbox Code Playgroud)

我想使用formtools.preview.默认模板打印选择的短版本('e'而不是'Fabulous eggs'),因为它使用

{% for field in form %}
<tr>
<th>{{ field.label }}:</th>
<td>{{ field.data }}</td>
</tr>
{% endfor %}.
Run Code Online (Sandbox Code Playgroud)

我想要一个像上面提到的一般模板,但是打印'Fabulous eggs'代替.

[因为我怀疑真正的问题在哪里,我为所有人加粗了:)]

我知道如何以一种本身丑陋的方式获得一个选择的冗长版本:

{{ form.meal.field.choices.1.1 }}
Run Code Online (Sandbox Code Playgroud)

真正的痛苦是我需要得到所选择的选择,而我想到的唯一方法是迭代选择和检查{% ifequals currentChoice.0 choiceField.data %},这甚至更加丑陋.

可以轻松完成吗?或者它需要一些模板标签编程?难道这不应该在django中可用吗?

django django-templates django-forms

122
推荐指数
6
解决办法
6万
查看次数

Django获得显示名称选择

我正在努力找到解决问题的方法.

models.py

class Article(models.Model):
    title = models.CharField(max_length=100)
    slug = models.SlugField()
    description = models.TextField()

def archive_quality(self):
    return self.archive_set.order_by('-quality').distinct().values_list('quality', flat=True)


class Archive(models.Model):
    CHOICES_QUALITY = (
        ('1', 'HD YB'),
        ('2', 'HD BJ'),
        ('3', 'HD POQD'),
        ('4', 'HD ANBC'),
    )
    article = models.ForeignKey(Article)
    quality = models.CharField(max_length=100, choices=CHOICES_QUALITY)
Run Code Online (Sandbox Code Playgroud)

arhives.html

{% for article in articles %}
    {{ article }}
    {% for quality in article.archive_quality %}
        {{ quality.get_quality_display }}#This is not working
    {% endfor %}
{% endfor %}
Run Code Online (Sandbox Code Playgroud)

更新 函数archive_quality很重要,因为它可以防止模板对象再次出现.

Example:
article:
   My article one
Archive:
       quality: …
Run Code Online (Sandbox Code Playgroud)

python django templates

8
推荐指数
2
解决办法
2万
查看次数