【问题标题】:How to limit which database objects are rendered in Django admin space如何限制在 Django 管理空间中呈现哪些数据库对象
【发布时间】:2021-07-08 16:44:03
【问题描述】:

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

我们已经扩展到多个地点。

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

我还没有找到任何关于最佳方式的好资源。任何建议将不胜感激!

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

例如,如果用户要去“波士顿/管理员”,他们应该只能看到“fk_location_name”=“波士顿”的产品

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

【问题讨论】:

    标签: python django django-admin


    【解决方案1】:

    我在 django admin get_queryset(self, request) 中了解到一个方法

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

    【讨论】:

      猜你喜欢
      • 2018-01-11
      • 1970-01-01
      • 2019-07-06
      • 1970-01-01
      • 2010-09-08
      • 1970-01-01
      • 2019-12-07
      • 2014-08-24
      • 1970-01-01
      相关资源
      最近更新 更多