Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/288.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python Django admin-Tablerinline-仅显示其他模型中的一些对象_Python_Django - Fatal编程技术网

Python Django admin-Tablerinline-仅显示其他模型中的一些对象

Python Django admin-Tablerinline-仅显示其他模型中的一些对象,python,django,Python,Django,示例模型: class Book(models.Model): TYPES = ( (0, 'Sci-fi') (1, 'Biography') ) title = models.CharField(...) book_type = models.CharField(max_length=1, choices=TYPES) class Connect(models.Model): book1 = models.For

示例模型:

class Book(models.Model):
    TYPES = (
        (0, 'Sci-fi')
        (1, 'Biography')
    )

    title = models.CharField(...)
    book_type = models.CharField(max_length=1, choices=TYPES)

 class Connect(models.Model):
     book1 = models.ForeignKey(Book, related_name='book_1')
     book2 = models.ForeignKey(Book, related_name='book_2')
我想做一个思考,在书中以表格行的形式显示连接,但仅在book1\uuuuu Book\u type=0的地方显示连接

我试着这样做:

class ConnectFormSet(BaseInlineFormSet):
    def get_queryset(self):
        if not hasattr(self, '_queryset'):
            qs = super(ConnectionFormSet, self).get_queryset().filter('book1__book_type':0)
            self._queryset = qs
        return self._queryset



class InlineConnectn(admin.TabularInline):
    fk_name = 'book1'
    model = Connect
    extra = 0
    formset = ConnectFormSet
但它不是我想要的。但是,所有连接在列表行中的连接列表中都可见

Works only save Connect(仅保存与book1的连接。\u book\u type=0)。

应执行您想要的操作:

class InlineConnectn(admin.TabularInline):
    def formfield_for_foreignkey(self, db_field, request, **kwargs):
        if db_field.name == "book1":
            kwargs["queryset"] = Foo.objects.filter(book1__book_type=1)
        return super(InlineConnectn, self).formfield_for_foreignkey(db_field, request, **kwargs)