【发布时间】:2021-12-19 12:17:08
【问题描述】:
class Meta: verbose_name 仅更改其显示名称。但是当它点击时。我希望它的网址也根据详细名称更改
这是我的代码:
型号:
tables = [f.id for f in StockId.objects.raw(
"SELECT TABLE_NAME AS id FROM INFORMATION_SCHEMA.tables WHERE TABLE_NAME LIKE 'my_project_auth_stockid%%'")]
table_map = {}
for tbl in tables:
class Stocks(models.Model):
user_id = models.IntegerField()
product_name = models.CharField(max_length=100)
mrp = models.IntegerField()
selling_price = models.IntegerField()
class Meta:
db_table = tbl
managed = False
verbose_name = _(tbl)
verbose_name_plural = _(tbl)
table_map[tbl] = Stocks
Admin.py
from my_project_auth.models import *
class AllStocksAdmin(AdminSite):
site_header = 'All User Stocks'
stockadmin = AllStocksAdmin(name="stockadmin")
for tbl in tables:
class StocksAdmin(ImportExportModelAdmin):
resource_class = StocksAdminResource
list_display = ["product_name"]
stockadmin.register(table_map[tbl], StocksAdmin)
我要做的是在上面用单个模型制作多个库存表。但是每只股票的管理面板都不起作用。所有股票表都指向单个表,因为管理 URL 基于模型的类名。
我正在尝试在 Admin.py 中执行类似的操作,请提出更改建议:
for tbl in tables:
class StocksAdmin(ImportExportModelAdmin):
resource_class = StocksAdminResource
list_display = ["product_name"]
def get_urls(self): # Not Working
urls = super(StocksAdmin, self).get_urls()
my_urls = path(f'stockadmin/{tbl}/', self.admin_view(stockadmin))
return my_urls + urls
【问题讨论】:
-
这些表有多少?如果您不太喜欢现在的方式,您可以为模型创建唯一名称来解决此问题?
-
@IainShelvington 每个用户都会有自己的股票表。我可以使用当前的代码逻辑,但每个用户都会有自己的表是持久的
-
您对这个解决方案的设计有意见吗?每个用户都有一张桌子会暴露出越来越多的此类问题。
-
@IainShelvington 该项目的主要逻辑是用户将从“主产品表”中选择产品并拥有自己的库存表(用于他们自己的子域站点)进行销售。是的,会有 1000 个表中的 100 个,但现在因为它处于初始化阶段,有管理面板,它的帮助很大。感谢这个解决方案的人
标签: django django-models django-admin