gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-01 05:38:48 27 4
gpt4 key购买 nike

示例模型:

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

我想想想,在 Book 中将 Connect 显示为 TabularInline,但仅在 book1__book_type = 0 处显示 Connect

我尝试这样做:

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

但它并没有像我想要的那样工作。所有连接仍然在 TabularInline 的连接列表中可见。

仅适用于保存 Connect(仅保存带有 book1__book_type = 0 的 Connect)。

最佳答案

formfield_for_foreignkey应该做你想做的事:

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)

关于python - Django admin - TabularInline - 仅显示其他模型中的一些对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18197039/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com