有没有办法可以采用模型,定义一个等效的字段并使用它来过滤?
示例模型:
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")
答案 0 :(得分:1)
对于一个简单的案例,您可以这样做:
Manufacturer.objects.filter(company__name='Davies')
如果您要定义自定义过滤器,看起来最好的方法是在模型上设置自定义管理器,如下所述:https://docs.djangoproject.com/en/dev/topics/db/managers/#custom-managers
我实际上并没有这样做,但如果你为你的模型定义一个经理,你应该能够做到以下其中一个:
filter
方法,然后您应该可以根据需要修改kwargs
,以便用漫长丑陋的连接替换别名my_filter
,应用您想要的过滤相关的SO问题:Django Custom Queryset filters