gpt4 book ai didi

django admin 如何限制选择框的值

转载 作者:行者123 更新时间:2023-12-02 07:13:47 24 4
gpt4 key购买 nike

型号:

class Store(models.Model):
name = models.CharField(max_length = 20)
class Admin:
pass
def __unicode__(self):
return self.name

class Stock(Store):
products = models.ManyToManyField(Product)
class Admin:
pass
def __unicode__(self):
return self.name

class Product(models.Model):
name = models.CharField(max_length = 128, unique = True)
parent = models.ForeignKey('self', null = True, blank = True, related_name='children')
(...)
def __unicode__(self):
return self.name

mptt.register(Product, order_insertion_by = ['name'])

管理员.py:

from bar.drinkstore.models import Store, Stock

from django.contrib import admin

admin.site.register(Store)
admin.site.register(Stock)

现在,当我查看管理站点时,我可以从列表中选择任何产品。但我想有一个有限的选择——只有离开。在 mptt 类中有函数:

is_leaf_node() -- returns True if the model instance is a leaf node (it has no children), False otherwise.

但是我不知道怎么连接它

我正在尝试创建一个子类:在 admin.py 中:

  from bar.drinkstore.models import Store, Stock

from django.contrib import admin

admin.site.register(Store)

class StockAdmin(admin.ModelAdmin):
def queryset(self, request):
return super(StockAdmin, self).queryset(request).filter(ihavenoideawhatfilter)

admin.site.register(Stock, StockAdmin)

但我不确定这是否正确,以及设置的过滤器。

UPD:这绝对是错误的方式。 StockAdmin 类中的查询集生成股票列表。但我需要过滤“库存”产品列表 - 仍然不知道如何。

最佳答案

编辑:完全更新了这个

所以查询集终于可以了,但是您需要在 Stock 页面选择框中过滤产品(我猜?)。您可以为 Stock ModelAdmin 定义自定义表单。

class StockForm(ModelForm):
products = forms.ModelChoiceField(queryset=Products.objects.filter(lft=F('rght')-1))
class Meta:
model = Stock

class StockAdmin(admin.ModelAdmin):
form = StockForm

关于django admin 如何限制选择框的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3021894/

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