Creacion de admin panel para lists
This commit is contained in:
34
lists/admin.py
Normal file
34
lists/admin.py
Normal file
@@ -0,0 +1,34 @@
|
||||
from django.contrib import admin
|
||||
from lists.models import Tag, Entity, ListItem, OpinionHelpful
|
||||
|
||||
|
||||
@admin.register(Tag)
|
||||
class TagAdmin(admin.ModelAdmin):
|
||||
pass
|
||||
|
||||
|
||||
@admin.register(Entity)
|
||||
class EntityAdmin(admin.ModelAdmin):
|
||||
pass
|
||||
|
||||
|
||||
@admin.register(ListItem)
|
||||
class ListItemAdmin(admin.ModelAdmin):
|
||||
list_display = ('pk', 'username', 'entity_mbid', 'stars')
|
||||
list_filter = ('stars',)
|
||||
filter_horizontal = ('tags', )
|
||||
|
||||
search_fields = ['pk', 'user__username', 'entity__mbid', 'stars']
|
||||
|
||||
@staticmethod
|
||||
def entity_mbid(obj):
|
||||
return str(obj.entity.mbid)
|
||||
|
||||
@staticmethod
|
||||
def username(obj):
|
||||
return str(obj.user.username)
|
||||
|
||||
|
||||
@admin.register(OpinionHelpful)
|
||||
class OpinionHelpfulAdmin(admin.ModelAdmin):
|
||||
pass
|
||||
@@ -13,35 +13,57 @@ class Entity(Model):
|
||||
|
||||
Pueden ser: artist, release-group, release o recording
|
||||
"""
|
||||
class Meta:
|
||||
verbose_name = 'Entidad'
|
||||
verbose_name_plural = 'Entidades'
|
||||
|
||||
ENTITY_TYPES = [
|
||||
('artist', 'Artista'),
|
||||
('release-group', 'Grupo de Lanzamientos'),
|
||||
('release', 'Lanzamiento'),
|
||||
('recording', 'Grabación')
|
||||
]
|
||||
mbid = CharField(max_length=36, primary_key=True)
|
||||
entity_type = CharField(max_length=25, choices=ENTITY_TYPES)
|
||||
mbid = CharField('mbid', max_length=36, primary_key=True)
|
||||
entity_type = CharField('tipo', max_length=25, choices=ENTITY_TYPES)
|
||||
|
||||
def __str__(self):
|
||||
return self.mbid
|
||||
|
||||
|
||||
class Tag(Model):
|
||||
"""Tag creada por un usuario"""
|
||||
user = ForeignKey(User, on_delete=CASCADE, related_name='tags')
|
||||
name = CharField(max_length=50)
|
||||
name = CharField('nombre', max_length=50)
|
||||
|
||||
def __str__(self):
|
||||
return self.name
|
||||
|
||||
|
||||
class ListItem(Model):
|
||||
"""Item de la lista de un usuario"""
|
||||
|
||||
class Meta:
|
||||
verbose_name = 'item de lista'
|
||||
verbose_name_plural = 'items de la lista'
|
||||
|
||||
stars_validators = [MinValueValidator(0), MaxValueValidator(5)]
|
||||
|
||||
user = ForeignKey(User, on_delete=CASCADE, related_name='list')
|
||||
entity = ForeignKey(Entity, on_delete=CASCADE)
|
||||
stars = IntegerField(default=0, validators=stars_validators, blank=True)
|
||||
opinion = TextField(default='', blank=True)
|
||||
stars = IntegerField('estrellas', default=0, validators=stars_validators, blank=True)
|
||||
opinion = TextField('opinion', default='', blank=True)
|
||||
tags = ManyToManyField(Tag, related_name='list', blank=True)
|
||||
|
||||
def __str__(self):
|
||||
return f'{self.user.username}:{self.entity.mbid}'
|
||||
|
||||
|
||||
class OpinionHelpful(Model):
|
||||
"""Voto sobre una opinion"""
|
||||
class Meta:
|
||||
verbose_name = 'valoración de opinion'
|
||||
verbose_name_plural = 'valoraciones de opinion'
|
||||
|
||||
VOTES = [
|
||||
('Y', 'Si'),
|
||||
('N', 'No'),
|
||||
@@ -50,4 +72,7 @@ class OpinionHelpful(Model):
|
||||
|
||||
user = ForeignKey(User, on_delete=CASCADE)
|
||||
opinion = ForeignKey(ListItem, on_delete=CASCADE)
|
||||
vote = CharField(max_length=1, choices=VOTES)
|
||||
vote = CharField('voto', max_length=1, choices=VOTES)
|
||||
|
||||
def __str__(self):
|
||||
return f'{self.vote}'
|
||||
|
||||
Reference in New Issue
Block a user