Django отображает в выпадающем списке только объект внешнего ключа соответствующего пользователя

У меня есть выпадающий список, как на картинке ниже. Он должен показывать только кампании зарегистрированных пользователей (здесь последний бесплатный элемент. Но он показывает кампании других пользователей. Любая помощь будет принята с благодарностью. Вот :

  • Вот мое мнение:

    def insertion_orders(request, pk):
      if request.user.is_authenticated:
          user = User.objects.get(id=pk)
          insertion_orders = user.insertionorder_set.all().order_by('-created_date')
          filter = InsertionOrdersFilter(request.GET, queryset=insertion_orders)
          insertion_orders_filter = filter.qs
          print(insertion_orders_filter)
          context = {
              'user': user,
              'insertion_orders': insertion_orders_filter,
              'filter': filter
          }
    
          return render(request, 'insertion_orders.html', context)
      else:
          return HttpResponse('You re not logged in ! Please log in first')
    
  • Мое model:

    class InsertionOrder(models.Model):
    
      user = models.ForeignKey(User, on_delete=models.CASCADE)
      campaign_naming_tool = models.ForeignKey(CampaignNamingTool,
                                               on_delete=models.CASCADE)
      budget = models.DecimalField(max_digits=20, decimal_places=2)
      goal_value = models.DecimalField(max_digits=20, decimal_places=2)
      start_date = models.DateField()
      end_date = models.DateField()
      created_date = models.DateTimeField(auto_now_add=True, blank=True, null=True)
    
      def __str__(self):
          return "%s" % self.campaign_naming_tool
          # return "{} - [{}]".format(self.insertion_order, self.user)
    
      class Meta:
          db_table = 'InsertionOrder'
    

Измените строку insertion_orders на:

insertion_orders = user.insertionorder_set.filter(user=request.user)

Думаю, это вам подойдет.

Вернуться на верх