【问题标题】:Django QuerySet AnyDjango 查询集任何
【发布时间】:2020-06-20 21:37:35
【问题描述】:

我想获取当前在图书馆中的所有书籍的查询集(当前租金的 dateReturn 设置为空)。 我是 python 新手,我不知道如何在 django 中进行子查询。 换句话说,想要在一个条件下过滤 every 相关对象字段,如果只有一个 related-object 与该条件不匹配,则 object 不得退货

models.py

class Book(models.Model):
    cod = models.CharField(max_length=255, unique=True)
    title = models.CharField(max_length=255)
    .....


class Rent(models.Model):
    dateRent = models.DateField(default=timezone.now)
    dateReturn = models.DateField(null=True, blank=True)
    book = models.ForeignKey(modelsBook.Book, on_delete=models.DO_NOTHING, related_name="rent")
    .....

附注: 我需要此子查询来显示当前未在选择字段中呈现的展示书

forms.py

class RentForm(forms.ModelForm):
    __pk=None

    def __init__(self, *args, **kwargs):
        self.__pk = kwargs.pop('pk', None)
        super(RentForm, self).__init__(*args, **kwargs)

    class Meta():
        model = models.Rent
        fields = ('book', 'student')      
        labels = {
            'book' : _('Libro'),
            'student' : _('Studente'),
        }
        widgets = {

            'book': queryset,
.....

【问题讨论】:

标签: python django django-models django-queryset


【解决方案1】:

您可以通过related_name过滤对象。

class RentForm(forms.ModelForm):
    __pk=None

    def __init__(self, *args, **kwargs):
        self.__pk = kwargs.pop('pk', None)
        super(RentForm, self).__init__(*args, **kwargs)

        self.fields['book'].queryset = Book.objects.exclude(rent__dateReturn__isnull=True)
   ...

【讨论】:

    猜你喜欢
    • 2020-10-26
    • 2017-01-12
    • 2012-04-26
    • 2013-11-07
    • 2013-12-06
    • 2021-07-25
    • 2011-05-16
    • 2021-10-22
    • 1970-01-01
    相关资源
    最近更新 更多