Python 按布尔条件筛选查询集中的对象

Python 按布尔条件筛选查询集中的对象,python,django,django-models,django-views,Python,Django,Django Models,Django Views,我想根据布尔条件过滤Queryset中的对象,但无法找到最佳方法。 目前我有两种型号: class Language(models.Model): langcode = models.CharField(max_length=3, unique=True) Translated = models.BooleanField(default=False) class Countries(models.Model): countrycode = models.CharFiel

我想根据布尔条件过滤Queryset中的对象,但无法找到最佳方法。 目前我有两种型号:

class Language(models.Model):
    langcode = models.CharField(max_length=3, unique=True)
    Translated = models.BooleanField(default=False)

class Countries(models.Model):
    countrycode = models.CharField(max_length=3, unique=True)
    spoken_languages = models.ManyToManyField(Language)
    Continent = models.CharField(max_length=50)
这代表了一个独特语言表和一个独特国家表。许多国家讲许多不同的语言,但并非每种语言都被翻译过

我现在想要的是一个国家查询集,其中只有翻译的语言出现在口语部分。我的想法是制作一个国家模型属性“translated_languages”,当一种语言被翻译为真时,它会自动更新。但我不知道如何让它表现得像我想要的一样(当语言被翻译时自动更新等等)。 第二次尝试是在视图级别上对其进行过滤,但在这里我再次失败,因为我不知道如何为每个国家单独过滤并存储它。 然后我在模板级别上尝试了它,但过滤器在那里不起作用

最后,我想在两个循环模板中使用对象:

{% for country in Countries %}
    {% for language in country.spoken_languages.all %}
        {{ language }}
那么你对此有何看法?最好的方法是什么(模板、视图、模型)以及如何实现?
如果仍不清楚,请告诉我,并提前感谢

您只需在此处添加一个if-else:

{% for country in Countries %}
    {% for language in country.spoken_languages.all %}
        {% if language.Translated %}
           {{ language }}
        {% endif %}
    {% endfor %}
{% endfor %}

要减少数据库命中率,您可以使用Countries queryset添加。

您只需在此处添加if-else:

{% for country in Countries %}
    {% for language in country.spoken_languages.all %}
        {% if language.Translated %}
           {{ language }}
        {% endif %}
    {% endfor %}
{% endfor %}

要减少数据库命中率,您可以使用Countries queryset添加。

只需在您的
Countries
模型中添加一个方法(请注意,以复数形式命名模型是不好的做法
国家将是一个更好的名称):

现在在模板中:

{% for country in Countries %}
    {% for language in country.translated_spoken_languages %}
        {{ language }}

只需在您的
国家/地区
模型中添加一个方法(注意,用复数形式命名模型是不好的做法
国家/地区
会是一个更好的名称):

现在在模板中:

{% for country in Countries %}
    {% for language in country.translated_spoken_languages %}
        {{ language }}

这正是我想要的!非常感谢。现在,我想排除用户当前使用的语言。我试图在函数/def translated…(self,current_language)中使用它作为参数,但我无法从模板将其传递给函数。这可能吗?@3ng7n33r Django不支持在模板中调用函数,但您可以创建一个.Brilliant!这和我想要的一模一样。谢谢阿卜杜勒·阿齐兹!这正是我想要的!非常感谢。现在,我想排除用户当前使用的语言。我试图在函数/def translated…(self,current_language)中使用它作为参数,但我无法从模板将其传递给函数。这可能吗?@3ng7n33r Django不支持在模板中调用函数,但您可以创建一个.Brilliant!这和我想要的一模一样。谢谢阿卜杜勒·阿齐兹!非常感谢。在这个场景中,我更喜欢Abdul Aziz Barkats方法,因为我可以进一步处理对象。谢谢。在这个场景中,我更喜欢Abdul-Aziz-Barkats方法,因为我可以进一步处理对象。