0

モデルを取得し、同等のフィールドを定義し、それを使用してフィルター処理する方法はありますか?

モデル例:

class Manufacturer(models.Model):
    uuid = UUIDField(primary_key=True)
    company = models.ForeignKey(Company, db_column='company_uuid')
    account_number = models.CharField(max_length=255, verbose_name=_('Account No'))
    reference = models.CharField(max_length=255)
    notes = models.TextField()

    class Meta:
        db_table = 'manufacturer'

次に、モデルに次のようなものを追加できますか:

self.field(name, self.company.name)

そして、次のことができます:

Manufacturer.objects.filter(name="Davies")
4

1 に答える 1

1

単純なケースでは、次のようにします。

Manufacturer.objects.filter(company__name='Davies')

カスタム フィルターを定義する場合は、 https ://docs.djangoproject.com/en/dev/topics/db/managers で説明されているように、モデルにカスタム マネージャーを設定するのが最善の方法のようです。 /#custom-managers

私は実際にはこれを行っていませんが、モデルのマネージャーを定義すると、次のいずれかを実行できるはずです。

  • メソッドをオーバーライドすると、必要に応じて変更して、エイリアスを長く醜い結合に置き換えるfilterことができるはずですkwargs
  • 必要なフィルタリングを適用するような新しいメソッドを定義しmy_filterます

関連する SO の質問: Django カスタム クエリセット フィルター

于 2013-08-28T15:11:08.883 に答える