Django QuerySet Any

2024-09-30 18:16:10 发布

您现在位置:Python中文网/ 问答频道 /正文

我想获取当前图书馆中所有书籍的查询集(当前租金的dateReturn设置为null)。 我是python新手,不知道如何在django中执行子查询。 换句话说,在“希望筛选条件上的每个相关对象”字段中,如果只有一个相关对象与此条件不匹配,则不得返回对象

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

附言: 我需要此子查询以显示当前未在choiceField中呈现的图书

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,
.....

Tags: 对象pyselftruemodelmodels条件null
1条回答
网友
1楼 · 发布于 2024-09-30 18:16:10

您可以通过相关的名称筛选对象

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

相关问题 更多 >