前提・実現したいこと
Djangoにて作成した2つのmodel(TagとItem)において、
フィールド名:tagを、ManyToManyとしてリレーションを作成しました。
ここからviews.pyを通じて情報を取得を試みています。
発生している問題・エラーメッセージ
対象のwebページ上に下記のよう出力されます。
accounts.Tag.None accounts.Tag.None accounts.Tag.None accounts.Tag.None
該当のソースコード
model
1from django.db import models 2from django.core import validators 3# Create your models here. 4 5class Category(models.Model): 6 category = models.CharField( 7 verbose_name="カテゴリー", 8 max_length=200, 9 null=True, 10 ) 11 12 def __str__(self): 13 return self.category 14 15class Tag(models.Model): 16 17 name = models.CharField('タグ', max_length=30) 18 19 def __str__(self): 20 return self.name 21 22class Item(models.Model): 23 24 25 SEX_CHOICES = ( 26 (1, '男性'), 27 (2, '女性'), 28 ) 29 30 name = models.CharField( 31 verbose_name='名前', 32 max_length=200, 33 ) 34 age = models.IntegerField( 35 verbose_name='年齢', 36 validators=[validators.MinValueValidator(1)] 37 ) 38 sex = models.IntegerField( 39 verbose_name='性別', 40 choices=SEX_CHOICES, 41 default=1 42 ) 43 memo = models.TextField( 44 verbose_name='備考', 45 max_length=300, 46 blank=True 47 ) 48 49 photo = models.ImageField( 50 verbose_name="フォト", 51 blank = True, 52 null=True 53 ) 54 55 created_at = models.DateTimeField( 56 verbose_name='登録日', 57 auto_now_add=True 58 ) 59 60 category = models.ForeignKey(Category, on_delete=models.CASCADE,null=True) 61 62 tag = models.ManyToManyField(Tag, verbose_name="たぐ")
views
1class TagView(ListView): 2 model = Item 3 form_class = TagForm 4 5 def get_queryset(self): 6 queryset = super().get_queryset().all() 7 8 return queryset
item_list.html {% extends "../base.html" %} {% block content %} {% for tag in item_list %} {{ tag }} {% endfor %} {% endblock %}
問題点
最終的には
Item.objects.all().filter(tag__pk=)、のような形で条件を指定したいのですが、
その前段階で躓いています。
Tagモデルを直接参照はできたので、データ自体は存在していると思うのですが、
Djangoのリレーションについて、なにか助言いただければ幸いです。
補足情報(FW/ツールのバージョンなど)
python 3.6
Django version 2.1.2

回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/11/25 01:28
2018/11/25 02:15
2018/11/26 02:48