【发布时间】:2019-06-02 21:38:33
【问题描述】:
我正在询问有关权限的问题,我有 2 个表,AnagraficaCliente 和 Tracking,关系为 1 到许多,用户的 autentichate 默认内置于 django.contrib.auth.urls。 我搜索了许多论坛和站点,但我不明白如何为确定的用户设置行权限。例如: 我的网站是一个显示已发货项目的网络跟踪,如果我搜索跟踪它的用户,但所有跟踪都是可见的(对所有用户),我希望只有属于用户的跟踪显示给他。 我认为我使用来自
的模型用户django.contrib.auth.models 导入用户
我不知道如何使用我的代码。
非常感谢。
models.py
from django.db import models
from django.urls import reverse
# Create your models here.
class AnagraficaCliente(models.Model):
codice_cliente = models.CharField(max_length=20, primary_key=True, null=False, unique=True)
ragione_sociale = models.CharField(max_length=80)
#ragione_sociale_dest = models.CharField(max_length=40)
nome = models.CharField(max_length=40, blank=True)
cognome = models.CharField(max_length=20, blank=True)
#ragione_sociale = models.CharField(max_length=20)
indirizzo = models.TextField(blank=True)
cap = models.CharField(max_length=5, blank=True)
piva = models.CharField(max_length=20, blank=True)
vatnumber = models.CharField(max_length=20, blank=True)
#ragione_sociale_dest = models.CharField(max_length=40)
#indirizzo_dest = models.TextField(null=True)
def __str__(self):
#return self.ragione_sociale + " " + self.codice_cliente
#return self.ragione_sociale_dest + " - " + self.indirizzo_dest + " - " + self.codice_cliente
return self.codice_cliente + " - " + self.ragione_sociale
class Meta:
verbose_name = "AnagraficaCliente"
verbose_name_plural = "AnagraficaClienti"
class Tracking(models.Model):
track = models.CharField(max_length=11, null=False, unique=True, primary_key=True)
indirizzo_dest = models.TextField(null=False)
passaggio1 = models.CharField(max_length=50, blank=True)
data1 = models.DateField(blank=True, null=True)
passaggio2 = models.CharField(max_length=50, blank=True)
data2 = models.DateField(blank=True, null=True)
passaggio3 = models.CharField(max_length=50, blank=True)
data3 = models.DateField(blank=True, null=True)
passaggio4 = models.CharField(max_length=50, blank=True)
data4 = models.DateField(blank=True, null=True)
passaggio5 = models.CharField(max_length=50, blank=True)
data5 = models.DateField(blank=True, null=True)
consegna = (
('C', 'Consegnato'),
('N', 'Non consegnato'),
)
consegnato = models.CharField(
max_length=1, choices=consegna, blank=True, null=True)
#consegnato = models.BooleanField(blank=True)
#esito = models.CharField(max_length=10, blank=True)
flag = models.CharField(max_length=2, blank=True)
AnagraficaCliente = models.ForeignKey(AnagraficaCliente, on_delete=models.CASCADE, related_name='trackings')
def __str__(self):
return self.track
class Meta:
verbose_name = "Tracking"
verbose_name_plural = "Trackings"
admin.py
from django.contrib import admin
from .models import AnagraficaCliente, Tracking
from import_export.admin import ImportExportModelAdmin
#from import_export.admin import ImportExportActionModelAdmin
from import_export import resources
# Register your models here.
class ClientResource(resources.ModelResource):
class Meta:
model = AnagraficaCliente
skip_unchanged = True
report_skipped = True
#fields = ('id','codice_cliente','ragione_sociale','nome','cognome','ragione_sociale','indirizzo','cap','piva','vatnumber')
import_id_fields = ['codice_cliente']
@admin.register(AnagraficaCliente)#Decoratore per mostrare in admin anagraficacliente
class SearchCodice(admin.ModelAdmin):
search_fields = ('codice_cliente', 'ragione_sociale')#Ricerca in admin
list_display = ('codice_cliente','ragione_sociale','indirizzo')#Elenco nomi campo nelle tabelle
class ClientAdmin(ImportExportModelAdmin):
resource_class = ClientResource #Classe per import export csv punta alla classe ClientResource
class ClientResource(resources.ModelResource):
class Meta:
model = Tracking
skip_unchanged = True
report_skipped = True
#fields = ('id','codice_cliente','ragione_sociale','nome','cognome','ragione_sociale','indirizzo','cap','piva','vatnumber')
import_id_fields = ['track']
@admin.register(Tracking)
class SearchTrack(admin.ModelAdmin):
search_fields = ('track', 'consegnato')
list_display = ('track','indirizzo_dest','consegnato')
【问题讨论】:
标签: django django-models