如何在django中筛选模型字段?

如何在django中筛选模型字段?,django,django-models,filtering,Django,Django Models,Filtering,我在后端开发方面很新,所以我有一个基本的问题 我有三种不同的模式,一种是命名为活动 class Campaigns(models.Model): channel = models.ForeignKey(Channels, blank=False, verbose_name="Channel Name", on_delete=models.CASCADE) campaign_name = models.CharField(max_length=255, bl

我在后端开发方面很新,所以我有一个基本的问题

我有三种不同的模式,一种是命名为活动

class Campaigns(models.Model):
   
   channel = models.ForeignKey(Channels, blank=False, verbose_name="Channel Name", on_delete=models.CASCADE)
   campaign_name = models.CharField(max_length=255, blank=False, verbose_name="Campaign Name")
二是,

class CampaignDetails(models.Model):
   channel = models.ForeignKey(Channels, blank=False, null=True, verbose_name="Channel Name", on_delete=models.CASCADE)
   name = models.ForeignKey(Campaigns, blank=False, null=True, verbose_name="Campaign", on_delete=models.CASCADE)
最后一个是,

Class Channels(models.Model):
   name = models.CharField(max_length=50, null=False, blank=False, verbose_name="Tv Channel")
我想按频道筛选活动详细信息中的名称。比如,如果我选择频道1,我想按该频道下的活动名称筛选名称。我该怎么办


非常感谢您的帮助。

我不完全理解您的问题。所以我可以给你一些决定。例如,你可以过滤它:

channel=channel.objects.get(pk=1)
channel.campaigndetails_set.all()#或channel.campaigndetails_set.filter(name='your name')
其他模型也是如此,你也可以通过其他方法来实现,不过你觉得很容易

模板中

{%for i in champaigns%}
{{i.channel}}
{%endfor%}

我不知道你为什么有两个频道。但如果你想按频道过滤

campaign_details = CampaignDetails.objects.filter(channel__name="insert_channel_name_here")
如果你想清理的话。从活动详细信息中删除频道,并将外键“name”的名称更改为活动

campaign_details = CampaignDetails.objects.filter(campaign__channel__name="insert_channel_name_here")

所以你的活动细节已经和频道有关系了,有什么理由让活动也和频道有关系吗?我的想法是所有的活动都可以分配不同的频道,这就是为什么我把它们关联起来是的,我明白了,但是,活动细节“已经”和你的活动的频道有关系。那么,还有什么其他原因使活动也具有这种关系吗?我明白你的意思,我想使用渠道关系按渠道过滤活动,但我未能管理。这就是为什么我要问“我怎样才能按频道过滤活动详细信息”这在视图中可能有效,但我想在管理面板中过滤它。就像当我选择频道A时,我想看看哪些活动被添加到频道A中。我想在模型中过滤它
campaign_details = CampaignDetails.objects.filter(campaign__channel__name="insert_channel_name_here")