首页 > 解决方案 > DJANGO - 管理员操作

问题描述

我想用管理员为汽车经销商创建一个网站,并允许经销商添加、编辑、删除汽车。

我的问题是,在 Django Admin 上,当我使用任何帐户登录时,我会看到所有汽车,并且我只想显示连接到经销商的汽车。

我创建一个模型

from django.db import models
from django.contrib.auth.models import User
import datetime
from brand.models import Brands
from django.urls import reverse

class Car(models.Model):
 dealer = models.ForeignKey(User, on_delete=models.DO_NOTHING)
 brand = models.ForeignKey(Brands, on_delete=models.DO_NOTHING)
 carname = models.CharField(max_length=100)
 def __str__(self):
 return '%s %s' % (self.brand, self.carname)

另外,当我创建汽车时,经销商列表会显示数据库中的所有经销商,但我只想显示连接的帐户名称。

谢谢你的帮助

标签: djangodjango-modelsdjango-admindjango-authentication

解决方案


在 Django Admin 类中,您可以定义has_view_permission方法https://docs.djangoproject.com/en/3.2/ref/contrib/admin/#django.contrib.admin.ModelAdmin.has_view_permission

例如:

class CarAdmin(admin.ModelAdmin):
    def has_view_permission(request, obj=None):
        if request.user == obj.dealer:
            return True
        else:
            return False

推荐阅读