ManyToManyフィールドのすべてのデータを表示

ディエゴアビラ

私は関係manytomanyからすべてのデータを取得しようとしています、これは私のモデルです

class Product(models.Model):

    name = models.CharField(max_length=100)
    image = models.FileField(upload_to='products/', null=True)
    price = models.FloatField(default=0)
    stock = models.CharField(max_length=15)
    categories = models.ManyToManyField(Categories)
    def __str__(self):
        return self.name

class Categories(models.Model):
   name =  models.CharField(max_length=100)
    def __str__(self):
        return self.name

製品からデータを取得するには、次のことを試してください。

class Products(ListView):

    model = Product
    template_name = "products.html"

テンプレートでは、次のように戻ります。

_______________________________
# | name  | price | Categories |
________________________________
1 | Pepsi | 1.25  |            |
2 | Choco.| 2.50  |            |

このテーブルを生成するために、私は次のサイクルを使用します。

{% for product in object_list %}
<tr>
<td>{{ forloop.counter }}</td>
<td>{{ product.name }}</td>
<td>{{ product.price }}</td>
<td>{{ product.categories }}</td>
{% endfor %}

この場合、製品で選択されたカテゴリを空に戻します。提案してください。ありがとうございます。

セラフェイム

categories属性はProduct多対多の関係であるため、複数のオブジェクトを持つ別のクエリに解決されることに注意してくださいこれは別のクエリセットでobject_listあり、を行するだけなので、テンプレートにその印刷方法を明示的に指示する必要があります。

サンプルソリューションは次のとおりです。

{% for product in object_list %}
    <tr>
    <td>{{ forloop.counter }}</td>
    <td>{{ product.name }}</td>
    <td>{{ product.price }}</td>
    <td>
        {% for category in product.categories.all %}
            {{ category }}
        {% endfor %}
    </td>
{% endfor %}

または、django結合テンプレートタグ(https://docs.djangoproject.com/en/2.1/ref/templates/builtins/#join)を使用することもできます

{% for product in object_list %}
    <tr>
    <td>{{ forloop.counter }}</td>
    <td>{{ product.name }}</td>
    <td>{{ product.price }}</td>
    <td>{{ product.categories.all|join:", " }}</td>
{% endfor %}

Djangoを始めてからあなたを助けるためのいくつかのより簡単なコメント:

  • class Categoriesモデルの名前としてはあまり適切ではありません。class CategoryCategoryインスタンスは単一のカテゴリに関連付けられるため、名前を付けることをお勧めします。
  • class Productsビューの悪い名前です。class ProductListViewそれがあなたの製品のListViewであることがわかるように、名前を付けることを提案します。また、すべてのビューと同様の命名スキームを維持します。
  • FloatField価格(金銭的価値)を節約するためにを使用することは常に問題があります。その列で集計を実行しようとすると(つまり、平均を追加または取得しようとすると)、奇妙な値になります。これは、フロート数がどのように機能するかによるものです(つまり、一部の値はフロートで正確に表すことができませんが、1.3の代わりにフロートで1.2999999999999になるように、非常に近い近似値が得られます)。DecimalField代わりにを使用して、金銭的価値を適切に保存します。
  • 代わりに使用できるようにcontext_object_name属性をに渡すListViewことができますobject_listしたがって、次のProductListViewように定義した場合
    class ProductListView(ListView):
        model = Product 
        template_name = "products.html"         
        context_object_name = 'products'

{% for product in products %} ...テンプレートで実行できるようになります。

template_name属性をビューに追加することで、使用するテンプレートをビューに明示的に指示できますが、明示的なテンプレートがない場合、Djangoはオブジェクトの名前からテンプレートを推測します。この場合、推測されるテンプレートは「books / Publisher_list.html」になります。「books」の部分はモデルを定義するアプリの名前に由来し、「publisher」ビットはモデル名の小文字バージョンにすぎません。

template_nameクラスの2番目のリストビューを追加して、これが意図的なものであることを明示する場合にのみ使用してください

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

外部キーモデルのすべてのフィールドを表示する

分類Dev

ウィキデータクエリブラウザのすべてのフィールドを表示する

分類Dev

特定のフィールドのすべてのデータを取得します

分類Dev

Django:1つのモデルレコードをフィルタリングして、他のモデルのすべてのレコードを表示する

分類Dev

すべてのフィールドが条件を満たすすべてのデータを選択する

分類Dev

選択フィールドを使用してすべてのデータを表示するのではなく、Djangoの選択フィールドに関連するデータのみを表示するにはどうすればよいですか?

分類Dev

DjangoModelFormがすべてのフィールドを表示しない

分類Dev

モデルデータを別のモデルの応答のフィールドとして表示する方法

分類Dev

pythonpandasデータフレームの最後の値を除くすべてをフォワードフィル

分類Dev

FirebaseRealtimeデータベースのすべてのレコードにフィールドを追加する

分類Dev

Rシャイニーダッシュボードでフィルターを適用する前にすべてのデータを表示する方法

分類Dev

ManyToManyフィールドは、デフォルトですべてのモデルインスタンスを選択します/デフォルトのget_querysetを変更します

分類Dev

Haskellデータコンストラクターのすべてのフィールドを取得する

分類Dev

Access2010テーブルで特定のフィールドフィルターのすべてのレコードを表示する

分類Dev

PHPを使用してデータベース内のすべてのフィールドを一度に更新

分類Dev

セキレイフィールド/すべてのページのデータ?

分類Dev

光沢のあるデータテーブルは、フィルターを使用してすべてのデータを表示します

分類Dev

Gormは、他のフィールドが優先するフィールドデータごとに一意のデータをすべて取得します

分類Dev

データベーステーブルからすべてのフィールド名を取得するSymfony

分類Dev

既存のすべてのフィールドを再挿入するが、postgresqlの1つのフィールドデータのみを変更する方法は?

分類Dev

本番データベースのすべてのフィールドを誤って更新しましたか?

分類Dev

フォームがすべてのフィールドデータを送信していない

分類Dev

データテーブルのドロップダウンフィルターに「すべて表示」オプションを追加

分類Dev

メタクラスを使用するすべてのフィールドのリストを表示します

分類Dev

スルーモデルを使用してDjangoのManyToManyフィールドを理解する

分類Dev

すべてのdivのデータフィルター属性を取得します

分類Dev

DjangoORM-別のモデルを参照するモデルManyToManyフィールド

分類Dev

Django SearchFilterは、検索フィールドが空のときにすべてのデータを表示しています

分類Dev

データベース内のすべてのDATETIMEフィールドを更新します

Related 関連記事

  1. 1

    外部キーモデルのすべてのフィールドを表示する

  2. 2

    ウィキデータクエリブラウザのすべてのフィールドを表示する

  3. 3

    特定のフィールドのすべてのデータを取得します

  4. 4

    Django:1つのモデルレコードをフィルタリングして、他のモデルのすべてのレコードを表示する

  5. 5

    すべてのフィールドが条件を満たすすべてのデータを選択する

  6. 6

    選択フィールドを使用してすべてのデータを表示するのではなく、Djangoの選択フィールドに関連するデータのみを表示するにはどうすればよいですか?

  7. 7

    DjangoModelFormがすべてのフィールドを表示しない

  8. 8

    モデルデータを別のモデルの応答のフィールドとして表示する方法

  9. 9

    pythonpandasデータフレームの最後の値を除くすべてをフォワードフィル

  10. 10

    FirebaseRealtimeデータベースのすべてのレコードにフィールドを追加する

  11. 11

    Rシャイニーダッシュボードでフィルターを適用する前にすべてのデータを表示する方法

  12. 12

    ManyToManyフィールドは、デフォルトですべてのモデルインスタンスを選択します/デフォルトのget_querysetを変更します

  13. 13

    Haskellデータコンストラクターのすべてのフィールドを取得する

  14. 14

    Access2010テーブルで特定のフィールドフィルターのすべてのレコードを表示する

  15. 15

    PHPを使用してデータベース内のすべてのフィールドを一度に更新

  16. 16

    セキレイフィールド/すべてのページのデータ?

  17. 17

    光沢のあるデータテーブルは、フィルターを使用してすべてのデータを表示します

  18. 18

    Gormは、他のフィールドが優先するフィールドデータごとに一意のデータをすべて取得します

  19. 19

    データベーステーブルからすべてのフィールド名を取得するSymfony

  20. 20

    既存のすべてのフィールドを再挿入するが、postgresqlの1つのフィールドデータのみを変更する方法は?

  21. 21

    本番データベースのすべてのフィールドを誤って更新しましたか?

  22. 22

    フォームがすべてのフィールドデータを送信していない

  23. 23

    データテーブルのドロップダウンフィルターに「すべて表示」オプションを追加

  24. 24

    メタクラスを使用するすべてのフィールドのリストを表示します

  25. 25

    スルーモデルを使用してDjangoのManyToManyフィールドを理解する

  26. 26

    すべてのdivのデータフィルター属性を取得します

  27. 27

    DjangoORM-別のモデルを参照するモデルManyToManyフィールド

  28. 28

    Django SearchFilterは、検索フィールドが空のときにすべてのデータを表示しています

  29. 29

    データベース内のすべてのDATETIMEフィールドを更新します

ホットタグ

アーカイブ