【问题标题】:How can i filter a models field in django?如何过滤 django 中的模型字段?
【发布时间】:2021-02-10 15:55:40
【问题描述】:

我是后端开发的新手,所以我有一个基本问题。

我有三个不同的模型,其中一个名为 Campaigns;

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")

我想按渠道过滤 CampaignDetails 中的名称。就像我选择频道 1 一样,我想按该频道下的广告系列名称过滤名称。我该怎么办?

感谢您的帮助,谢谢。

【问题讨论】:

  • 那么您的 CampaignDetails 已经与渠道相关,那么 Campaign 是否也有任何理由与渠道相关?
  • 我的想法是所有广告系列都可以分配不同的渠道,这就是我将它们关联起来的原因
  • 是的,我明白了,但是,CampaignDetails “已经”与您的 Campaign 的渠道有关。那么,Campaign 是否还有其他原因也存在这种关系?
  • 我明白你的意思,我想使用渠道关系按渠道过滤我无法管理的活动。这就是为什么我要问“我如何按渠道过滤活动详细信息”

标签: django django-models filtering


【解决方案1】:

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

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

如果你想清理的话。从活动详情中删除频道,并将外键“name”的名称更改为活动

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

【讨论】:

    【解决方案2】:
    champaigns = Campaigns.objects.filter(chanel=Channels.objects.get(name="Chanel name"))
    for i in champaigns:
         print(i.channel)
    

    其他模型也是如此,您也可以通过其他方法做到这一点,但是您会发现它很容易

    在模板中

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

    【讨论】:

    • 这可能在视图中有效,但我想在管理面板中过滤它。就像当我选择频道 A 时,我想查看频道 A 中添加了哪些广告系列。我想在模型中对其进行过滤
    【解决方案3】:

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

    channel=Channel.objects.get(pk=1)
    channel.campaigndetails_set.all() #or channel.campaigndetails_set.filter(name='your name')
    我不确定答案,但我认为它会帮助你

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-10-29
      • 1970-01-01
      • 2011-12-03
      • 2015-08-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多