選択した「長い名前」を返すために、モデルにメソッドを作成しようとしています。私は明らかに「Model.get_FOO_display()」メソッドを理解していないか、構文の解体を行っています。最終的な計画は、(model_attr='xxx') を使用して (haystack) search_index.py で「長い名前」を取得することです。数時間検索しましたが、うまくいく例は見つかりませんでした。ご提案いただければ幸いです。ありがとう。
モデル.py
new_used = (
('n', 'new'),
('u', 'used'),
)
broker = (
('n', 'No'),
('y', 'Yes'),
)
class Flist(models.Model):
createdate = models.DateTimeField(auto_now_add=True)
expirydate = models.DateTimeField(null=True, blank=True)
price = models.IntegerField(null=True, blank=True)
new_used = models.CharField(max_length=1, blank=True, choices=new_used, default='u')
broker_y_n = models.CharField(max_length=1, blank=True, choices=broker, default='n')
mfr = models.CharField(max_length=80, blank=True)
listing_type = models.ForeignKey(ListingType)
listing_status = models.ForeignKey(ListingStatus, default=3)
location_zip = models.IntegerField(null=True, blank=True)
customer = models.ForeignKey(Customer)
def nu(self):
return Flist.get_new_used_display
def byn(self):
return Flist.get_broker_y_n_display
search_indexes.py
class FlistIndex(indexes.SearchIndex, indexes.Indexable):
text = indexes.CharField(document=True, use_template=True)
createdate = indexes.DateTimeField(model_attr='createdate', faceted=True)
price = indexes.IntegerField(model_attr='price', faceted=True)
new_used = indexes.CharField(model_attr='nu', faceted=True)
broker_y_n = indexes.CharField(model_attr='byn', faceted=True)
mfr = indexes.CharField(model_attr='mfr', faceted=True)
listing_type = indexes.CharField(model_attr='listing_type', faceted=True)
listing_status = indexes.CharField(model_attr='listing_status', faceted=True)
location_zip = indexes.IntegerField(model_attr='location_zip', faceted=True)
def get_model(self):
return Flist
質問は続きます.....
「悪い」メソッドをプロパティに変更しました:
@property
def nu(self):
return self.get_new_used_display()
@property
def byn(self):
return self.broker_y_n_display()
haystack が (can't find_ model_attr(ibutes) 'byn' または 'nu' を好まないように見えるため、インデックスを作成しません。
メソッドと @property を始める前は、名前とファセット数を取得していましたが、名前は短いバージョンでした。FlistIndex の model_attr に長い名前を取得するための適切な構文は何ですか?