如何限制在Django管理空间中呈现哪些数据库对象



我有一个Django应用程序,用于跟踪我公司的产品库存。

此后,我们已扩展到多个地点。

现在我的目标是创建多个管理空间,其中显示的产品受产品位置的限制。

我还没有找到任何好的资源来找到最好的方法。如有任何建议,我们将不胜感激!

型号.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.register(dboinv_product)
class dboinv_productAdmin(admin.ModelAdmin):
form = CreateProductForm
pass

例如,如果用户要转到"Boston/admin",他们应该只能看到"fk_location_name"="Boston"的产品

注意:我想为自己保留原始的管理空间,但我会制作一个单独的URL,这样网站就没有链接到它

我在django管理员get_queryset(self, request)中学习了一个方法

在使用OneToOne关系扩展用户模型后,我可以将位置与用户相关联,并使用请求对象查看用户的位置,并使用get_queryset方法将查询集定制为匹配位置

最新更新