Отфильтруйте всю форму объекта django модально, если его идентификатор недоступен для другой таблицы и при некоторых условиях - PullRequest
1 голос
/ 19 января 2020
Comments(models.Model):
   comments = models.CharField(max_length=55)

UsedComment(model.Model):
   bot = model.ForeignKey(InstagramBot, on_delete=models.CASCADE)
   comment_id = model.ForeignKey(Comments, on_delete=models.CASCADE)

Я хочу отфильтровать все комментарии из модели комментариев, если ее идентификатор не используется тем же ботом в UsedComment. Я имею в виду комментарий можно повторить, но тот же бот не может использовать тот же комментарий

Ответы [ 2 ]

2 голосов
/ 19 января 2020

Вы можете фильтровать: 1007 * в качестве первичного ключа.

Примечание : обычно модели Django присваивается имя единственного числа , поэтому Comment вместо Comments.

Примечание : Обычно не добавляется суффикс _id к полю ForeignKey, поскольку Django автоматически добавит "двойное" поле с суффиксом _id. Следовательно, оно должно быть comment вместо comment_id.

Вы можете получить Comments объектов, которые использовались одним и тем же роботом несколько раз с помощью:

from django.db.models import Count, F

Comments.objects.annotate(
    ncomm=Count('usedcomment'),
    nbot=Count('usedcomment__bot', unique=True)
).filter(<b>nbot__lt=F('ncomm')</b>)
1 голос
/ 19 января 2020

Я хочу отфильтровать все комментарии из модели комментариев, если ее идентификатор не используется тем же ботом в UsedComment. Я имею в виду комментарий можно повторить, но тот же бот не может использовать тот же комментарий

Вы можете использовать ~Q в фильтре

from django.db.models import Q
Comments.objects.filter(~Q(usedcomment__bot=your_bot))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...