基于用户个人资料字段

时间:2016-10-15 15:03:05

标签: django django-users django-permissions

我通过添加公司字段扩展了django用户模型:

class Profile(models.Model):
    user = models.OneToOneField(User, on_delete=models.CASCADE, primary_key=True)
    company = models.ForeignKey(Companies, on_delete=models.CASCADE, null=True, blank=True)

现在假设另一个模型跨公司保存数据:

class Product(models.Model):
    name = models.CharField(max_length=256, null=True, blank=True)
    tags = TaggableManager(blank=True)
    company = models.ForeignKey(Companies, on_delete=models.CASCADE, null=True, blank=True, editable = False)

请注意,此处的公司字段不可编辑,因为我已覆盖save_model(),以从其个人资料中获取用户的公司字段:

class ProductAdmin(admin.ModelAdmin):
    def save_model(self, request, obj, form, change):
        if getattr(obj, 'company', None) is None:
            obj.company = request.user.profile.company
        obj.save()

如何根据用户个人资料字段(例如公司)创建自定义权限?

示例权限要求:

  1. 用户应该只能编辑与自己相关的产品字段 公司。
  2. 用户应该只能在新用户的个人资料字段中使用他们的公司创建新用户
  3. 提前致谢

0 个答案:

没有答案