如何限制在 Django admin 中呈现哪些数据库对象 space
How to limit which database objects are rendered in Django admin space
我有一个 Django 应用程序,用于跟踪我公司的产品库存。
我们已经扩展到多个地点。
现在我的目标是创建多个管理员 space,其中显示的产品受产品位置限制。
我还没有找到任何关于执行此操作的最佳方法的好资源。如有任何建议,我们将不胜感激!
models.py
class dboinv_product(models.Model):
pk_product_id = models.UUIDField(
default = uuid.uuid4,
primary_key=True,
null=False
)
product_creation_time = models.DateTimeField(
auto_now_add=True,
null=True
)
product_name = models.CharField(
max_length=50,
null=False
)
product_description = models.CharField(
max_length=500,
null=True
)
current_cost = models.DecimalField(
max_digits=5,
decimal_places=2,
null = True
)
current_qty = models.IntegerField(
null=False
)
obsolete = models.BooleanField(
null=True
)
fk_location_name = models.ForeignKey(
dboinv_location,
verbose_name="Location name",
default='Boston',
on_delete=models.CASCADE,
null=True,
blank=True
)
Admin.py
@admin.register(dboinv_product)
class dboinv_productAdmin(admin.ModelAdmin):
form = CreateProductForm
pass
例如,如果用户要去 'Boston/admin',他们应该只能看到 'fk_location_name' = 'Boston'
的产品
注意:我想为自己保留原来的管理员 space,但我会单独制作一个 URL,这样网站就没有 link
我在 django admin 中了解到一个方法 get_queryset(self, request)
用 OneToOne 关系扩展用户模型后,我可以将位置与用户相关联,并使用请求对象查看用户位置,并使用 get_queryset 方法定制查询集以匹配位置
我有一个 Django 应用程序,用于跟踪我公司的产品库存。
我们已经扩展到多个地点。
现在我的目标是创建多个管理员 space,其中显示的产品受产品位置限制。
我还没有找到任何关于执行此操作的最佳方法的好资源。如有任何建议,我们将不胜感激!
models.py
class dboinv_product(models.Model):
pk_product_id = models.UUIDField(
default = uuid.uuid4,
primary_key=True,
null=False
)
product_creation_time = models.DateTimeField(
auto_now_add=True,
null=True
)
product_name = models.CharField(
max_length=50,
null=False
)
product_description = models.CharField(
max_length=500,
null=True
)
current_cost = models.DecimalField(
max_digits=5,
decimal_places=2,
null = True
)
current_qty = models.IntegerField(
null=False
)
obsolete = models.BooleanField(
null=True
)
fk_location_name = models.ForeignKey(
dboinv_location,
verbose_name="Location name",
default='Boston',
on_delete=models.CASCADE,
null=True,
blank=True
)
Admin.py
@admin.register(dboinv_product)
class dboinv_productAdmin(admin.ModelAdmin):
form = CreateProductForm
pass
例如,如果用户要去 'Boston/admin',他们应该只能看到 'fk_location_name' = 'Boston'
的产品注意:我想为自己保留原来的管理员 space,但我会单独制作一个 URL,这样网站就没有 link
我在 django admin 中了解到一个方法 get_queryset(self, request)
用 OneToOne 关系扩展用户模型后,我可以将位置与用户相关联,并使用请求对象查看用户位置,并使用 get_queryset 方法定制查询集以匹配位置