django - 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)
另外,当我创建汽车时,经销商列表会显示数据库中的所有经销商,但我只想显示连接的帐户名称。
谢谢你的帮助
解决方案
在 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