ビューでアクセスできないように見えるメソッドを使用して、Django にモデルがあります。モデルは次のとおりです。
class Realtor(models.Model):
user = models.OneToOneField(User)
team = models.ForeignKey(RealtorTeam, blank=True, null=True, default=None)
is_showing_realtor = models.BooleanField(default=False)
is_listing_realtor = models.BooleanField(default=False)
def type(self):
if self.is_showing_realtor and self.is_listing_realtor:
return 'Showing and Listing'
elif self.is_showing_realtor:
return 'Showing'
elif self.is_listing_realtor:
return 'Listing'
else:
return ''
ここで、ビューで、次のように、メソッドを含むモデルをクエリしようとします。
q = Realtor.objects.all()
q = q.filter(user__first_name__icontains=first)
q = q.filter(user__last_name__icontains=last)
q = q.filter(team__name__icontains=team)
q = q.filter(user__email__icontains=email)
q = q.filter(type__icontains=type)
私が得るエラーはですCannot resolve keyword 'type' into field. Choices are...
。私はいくつかのstackoverflowの質問を調べ、Djangoのドキュメントをさらに読んで、モデルに次のようなフィールドを追加することを確認しました:
type_display = (type,)
しかし、それはうまくいきませんでした。is_showing_realtor と is_listing_realtor を照会する必要がありますか? メソッドを照会する方法はありませんか?
より詳しい情報
モデルのテーブルを表示するために Django_tables2 を使用しています。type
次のように、それを使用してメソッドにアクセスできます。
class RealtorTable(tables.Table):
id = tables.Column()
first_name = tables.Column(accessor='user.first_name', order_by='user.first_name')
last_name = tables.Column(accessor='user.last_name', order_by='user.last_name')
team = tables.Column()
email = tables.Column(accessor='user.email', order_by='user.email')
type = tables.Column(order_by='is_showing_realtor')
それでも、それをビューに渡すことはできません。