我有一个称为“父母”的模型。在模型中,我有一个名为partner_types的ManyToManyfield。基于模型Partner_type。我想做的是过滤模型以检查某人是否是父母。
我尝试了过滤器集,但问题是我的partner_type是在管理员中定义的,因此我无法对其进行过滤。
class PartnerType(models.Model):
name = models.CharField(blank=False,
help_text="Name of the role or function", max_length=64,
verbose_name="Partner Type", )
class Partner(TimeStampedModel, StatusModel):
name = models.CharField(blank=True, max_length=100, verbose_name='Account Name', )
partner_types = models.ManyToManyField(PartnerType)
所以我当前在管理员中创建的合作伙伴类型为: 经纪人, 服务, 发行人 顾客, 父母
这是我尝试过的。
a = Partner.objects.filter(partner_types= Partner)
但是它不起作用。
我也尝试过。
a = Partner.objects.filter(partner_types = 4) for the numerical value of the many to many field object.
答案 0 :(得分:0)
执行此操作的方法有多种,具体取决于表示“父”是您感兴趣的PartnerType
的视图信息的精确程度。
一种方法是过滤相关的CharField
:
a = Partner.objects.filter(parter_types__name="parent")
如果您实际上已经加载了PartnerType
实例,则可以直接提供该实例:
parent = ParterTypes.objects.get(name="parent") # or whatever
...
a = Partner.objects.filter(parter_types=parent)
您基于ID的查询Partner.objects.filter(partner_types=4)
也是有效的,因此,如果没有得到您期望的结果,则可能需要进行一些数据检查。但是,相对于基于内容的过滤器,通常依赖于硬编码的PK是一个坏主意。
答案 1 :(得分:0)
这应该有效。
a=Partner.objects.filter(partnertype__name="Parent")