Джанго забирает вещи других пользователей - PullRequest
0 голосов
/ 23 мая 2019

Я добавляю заказ на продажу в свой проект, и только аутентифицированные пользователи могут создавать заказы на продажу из своих материалов, таких как контакты с клиентом, товары и т. Д., Но в пользовательском интерфейсе также отображаются параметры других пользователей.Например, я собираюсь создать заказ на продажу, и у меня есть 1 контакт с клиентом и 1 товар.в шаблонах вместо того, чтобы показывать 1 контакт с клиентом и 1 элемент, он также показывает количество материалов других пользователей.

models.py здесь это

class SalesOrder(TimeModel):

   customer = models.ForeignKey(ClientContact, on_delete=models.CASCADE)
   so_date = models.DateField(default=datetime.date.today)
   so_items = models.ForeignKey(Item, on_delete=models.CASCADE)
   author = models.ForeignKey('users.CustomUser', on_delete=models.CASCADE)

   class Meta:
     unique_together = ('so_items', 'author')

Я добавил unique_together, но это не помогает.для просмотра я использую CBV

views.py

class Sales(LoginRequiredMixin, CreateView):
  model = SalesOrder
  template_name = 'sales/sales_order.html'
  fields = ['customer', 'so_date', 'so_items',]

  def get_queryset(self):
    return super(Sales, self).get_queryset().filter(author=self.request.user)

  def form_valid(self, form):
    form.instance.author = self.request.user
    return super().form_valid(form)

  def test_func(self):
    so_order = self.get_object()
    if self.request.user == so_order.author:
        return True
    return False

как я могу решить эту проблему?любая помощь?

1 Ответ

0 голосов
/ 23 мая 2019

Ответ решается добавлением get_context_data() в представлении

    def get_context_data(self, **kwargs):
       context = super(Sales, self).get_context_data(**kwargs)
       context['form'].fields['customer'].queryset = ClientContact.objects.filter(author=self.request.user)
       context['form'].fields['so_items'].queryset = Item.objects.filter(author=self.request.user)
       return context
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...