class CreatedModifiedByMixin(models.Model): """ Mixin which adds Created By, Modified By aswell as Timestamps to your model """ class Meta: abstract = True created_by = UserForeignKey( verbose_name=_(u"User that created this element"), auto_user_add=True, # sets the current user when the element is created null=True, related_name='%(class)s_created') created_at = models.DateTimeField( verbose_name=_(u"Date when this element was created"), auto_now_add=True, # sets the date when the element is created editable=False, null=True, db_index=True, ) last_modified_by = UserForeignKey( verbose_name=_(u"User that last modified this element"), auto_user=True, # sets the current user everytime the element is saved null=True, related_name='%(class)s_modified') last_modified_at = models.DateTimeField( verbose_name=_(u"Date when this element was last modified"), auto_now=True, # sets the date everytime the element is saved editable=False, null=True, db_index=True, )
class TimeStampModel(models.Model): """ TimeStampModel acts as an abstract base class from which every other model in the project will inherit. This class provides every table with the following attributes: + created (DateTime): Store + modified (DateTime): Store """ created = models.DateTimeField( "created_at", auto_now_add=True, blank=True, help_text="Date time on which the object was created.", ) modified = models.DateTimeField( "modified_at", auto_now=True, blank=True, help_text="Date time on which the object was last modified.", ) deleted_at = models.DateTimeField("deleted_at", blank=True, null=True) creator = UserForeignKey(auto_user_add=True, related_name="+") modifier = UserForeignKey(auto_user=True, related_name="+") status = models.BooleanField("status", default=True, help_text="Status the object has currently") class Meta: """Meta option.""" abstract = True get_latest_by = "created" ordering = ["-created", "-modified"] # descendent
class ClaseModelo2(models.Model): estado = models.BooleanField(default=True) fc = models.DateTimeField(auto_now_add=True) fm = models.DateTimeField(auto_now=True) #uc = models.ForeignKey(User, on_delete=models.CASCADE) #um = models.IntegerField(blank=True,null=True) uc = UserForeignKey(auto_user_add=True,related_name='+') um = UserForeignKey(auto_user=True,related_name='+')
class ModeloBase(models.Model): estado = models.BooleanField(default=True) creacion = models.DateTimeField(auto_now_add=True) edicion = models.DateTimeField(auto_now=True) user_create = UserForeignKey(auto_user_add=True, related_name='+') user_update = UserForeignKey(auto_user=True, related_name='+') class Meta: abstract = True
class ClaseModelo(models.Model): estado = models.BooleanField(default=True) fecha_creacion = models.DateTimeField(auto_now_add=True) fecha_modificacion = models.DateTimeField(auto_now=True) usuario_creacion = UserForeignKey(auto_user_add=True, related_name='+') usuario_modificacion = UserForeignKey(auto_user=True, related_name='+') class Meta: abstract = True
class Generic(models.Model): class Meta: abstract = True created_time = models.DateTimeField(_("created at"), auto_now_add=True, editable=False) updated_time = models.DateTimeField(_("updated"), auto_now=True, editable=False, null=True, blank=True) created_by = UserForeignKey(auto_user_add=True, related_name="+") updated_by = UserForeignKey(auto_user=True, auto_user_add=True, related_name="+")
class ModelClass2(models.Model): status = models.BooleanField(default=True) creationDate = models.DateTimeField(auto_now_add=True) modificationDate = models.DateTimeField(auto_now=True) userCreator = UserForeignKey(auto_user_add=True, related_name='+') userModifier = UserForeignKey(auto_user=True, related_name='+') class Meta: abstract = True
class MyModel(models.Model): estado = models.BooleanField(default=True) fc = models.DateTimeField(auto_now_add=True) fm = models.DateTimeField(auto_now=True) uc = UserForeignKey(auto_user_add=True, related_name="+") um = UserForeignKey(auto_user=True, related_name="+") class Meta: abstract = True
class ClassModel2(models.Model): status = models.BooleanField(default=True) created = models.DateTimeField(auto_now_add=True) updated = models.DateTimeField(auto_now=True) created_by = UserForeignKey(auto_user_add=True, related_name="+") updated_by = UserForeignKey(auto_user_add=True, related_name="+") class Meta: abstract = True
class FinalAnnotation(models.Model): scan = ForeignKey(Scan, on_delete=CASCADE) retirement = ForeignKey(Retirement, on_delete=CASCADE, null=True) question = models.CharField(max_length=255, blank=True) answer = models.TextField(blank=True) created_on = models.DateTimeField(auto_now_add=True) modified_on = models.DateTimeField(auto_now=True) created_by = UserForeignKey(auto_user_add=True, on_delete=PROTECT, related_name='added_final_annotations') modified_by = UserForeignKey(auto_user=True, on_delete=PROTECT, related_name='modified_final_annotations')
class ClaseModelo2(models.Model): estado = models.BooleanField(default=True) fechaCreacion = models.DateTimeField(auto_now_add=True) fechaModificado = models.DateTimeField(auto_now=True) # uc = models.ForeignKey(User, on_delete=models.CASCADE) # um = models.IntegerField(blank=True,null=True) usuarioCrea = UserForeignKey(auto_user_add=True, related_name='+') usuarioModifica = UserForeignKey(auto_user=True, related_name='+') class Meta: abstract = True
class AnnotationField(models.Model): name = models.CharField(max_length=255) created_on = models.DateTimeField(auto_now_add=True) modified_on = models.DateTimeField(auto_now=True) created_by = UserForeignKey(auto_user_add=True, on_delete=PROTECT, related_name='added_annotation_fields') modified_by = UserForeignKey(auto_user=True, on_delete=PROTECT, related_name='modified_annotation_fields') class Meta: ordering = ["name"]
class ClaseModeloDos(models.Model): estado = models.BooleanField(default = True) fc = models.DateTimeField(auto_now_add=True) fm = models.DateTimeField(auto_now=True) # uc = models.ForeignKey(User, on_delete=models.CASCADE) # um = models.IntegerField(blank=True, null=True) # * WITH '+' AVOIDS TO GENERATE A SEARCH REGISTER WHEN LOOKING FOR THE USER uc = UserForeignKey(auto_user_add=True, related_name='+') um = UserForeignKey(auto_user=True,related_name='+') class Meta: abstract=True
class ClassModelo2(models.Model): estado = models.BooleanField(default=True) fc = models.DateTimeField( auto_now_add=True) #Se coloca una unica vez con auto_now_add fm = models.DateTimeField( auto_now=True) #Se coloa siempre y cuanda se modifique con auto_now # uc = models.ForeignKey(User, on_delete = models.CASCADE) # um = models.IntegerField(blank = True, null = True) uc = UserForeignKey(auto_user_add=True, related_name='+') um = UserForeignKey(auto_user=True, related_name='+') class Meta: abstract = True #Aqui le decimos a django q no lo tome en cuenta al momento de hacer la migraciones
class BaseModel(models.Model): created_by = UserForeignKey(auto_user_add=True, related_name="%(app_label)s_%(class)s_related", related_query_name="%(app_label)s_%(class)ss") created_at = models.DateTimeField(auto_now_add=True) last_modified_by = UserForeignKey( auto_user=True, auto_user_add=True, related_name="%(app_label)ss_%(class)s_related", related_query_name="%(app_label)s_%(class)ss") last_modified_at = models.DateTimeField(auto_now=True) class Meta: abstract = True
class ClaseModelo2(models.Model): estado = models.BooleanField('Estado', default=True) # Automatica mente se pone la fecha cuando se crea con la propiedad 'auto_now_add' fc = models.DateTimeField('Fecha De Creación', auto_now_add=True) # esta fecha se modifica cada vez que se realice una accion 'auto_now' fm = models.DateTimeField('Fecha de Modificacion', auto_now=True) # Llave foranea que se optiene del usuario uno (Usuario) a muchos (Modelo) #uc = models.ForeignKey(User, on_delete=models.CASCADE, verbose_name = "Usuario Crea") #um = models.IntegerField('Usuario Modifica', blank=True, null=True) uc = UserForeignKey(auto_user_add=True, related_name='+', verbose_name = "Usuario Crea") um = UserForeignKey(auto_user=True, related_name='+', verbose_name = "Usuario Modifica") #Se crea esta clase para que no tenga encuenta este modelo a la hora de la migracion class Meta: abstract = True
class Scan(models.Model): image = ImageField(upload_to='scans', null=True) type = models.CharField(max_length=50) text = models.TextField() status = models.CharField(max_length=25) created_on = models.DateTimeField(auto_now_add=True) modified_on = models.DateTimeField(auto_now=True) created_by = UserForeignKey(auto_user_add=True, on_delete=PROTECT, related_name='added_scans') modified_by = UserForeignKey(auto_user=True, on_delete=PROTECT, related_name='modified_scans') history = HistoricalRecords( history_change_reason_field=models.TextField(null=True), inherit=True)
class UserExternalTool(models.Model): external_tool = models.ForeignKey(ExternalTool,on_delete=models.DO_NOTHING) user = UserForeignKey(auto_user_add=True) user_access_info = models.CharField(max_length=5000,null=True) def __str__(self): return self.external_tool.name
class Advertisement(models.Model): ''' Model of an advertisement made by user (UserForeignKey package used) to sell a car ''' brand = models.ForeignKey(CarBrand, on_delete=models.CASCADE, verbose_name='Марка машины') body_type = models.ForeignKey(BodyType, on_delete=models.CASCADE, verbose_name='Тип кузова') gear_box = models.ForeignKey(GearBox, on_delete=models.CASCADE, verbose_name='Коробка передач') drive = models.ForeignKey(Drive, on_delete=models.CASCADE, verbose_name='Привод') color = models.ForeignKey(Color, on_delete=models.CASCADE, verbose_name='Цвет') cover_img = models.ImageField(upload_to='photos/%Y/%m/%d', verbose_name='Обложка объявления') year = models.IntegerField(verbose_name='Год выпуска') mileage = models.IntegerField(verbose_name='Пробег') engine_capacity = models.ForeignKey(EngineCapacity, on_delete=models.CASCADE, verbose_name='Литраж') description = RichTextUploadingField(verbose_name='Описание') seller = UserForeignKey(auto_user_add=True, on_delete=models.CASCADE, verbose_name='Продавец', related_name='advertisement') price = models.IntegerField(verbose_name='Цена') is_published = models.BooleanField(default=False, verbose_name='Опубликовано?') pub_date = models.DateTimeField(auto_now_add=True, verbose_name='Дата публикации') def __str__(self): return f"{self.brand}, {self.color}, {self.seller}, {self.price}" def get_absolute_url(self): return reverse('advertisement', kwargs={'pk': self.pk}) class Meta: ordering = ['-pub_date'] verbose_name = 'Обьявление' verbose_name_plural = 'Обьявления'
class Enrolled(models.Model): id = models.AutoField(primary_key=True) student_id = UserForeignKey(auto_user_add=True, on_delete=models.CASCADE) subject_id = models.ForeignKey(Subject, on_delete=models.PROTECT) created_at = models.DateTimeField(auto_now_add=True) updated_at = models.DateTimeField(auto_now=True) objects = models.Manager()
class Article( models.Model): subject = models.CharField(max_length=30, unique=True) message = RichTextUploadingField(blank=True, null=True) created_at = models.DateTimeField(auto_now_add=True,null=True) updated_at = models.DateTimeField( auto_now=True, null=True) author = UserForeignKey(auto_user_add=True, on_delete=models.CASCADE) college = models.ForeignKey(College, on_delete=models.CASCADE) picture = models.ImageField(upload_to='article_images',null=True, default="") likes = models.ManyToManyField(User, related_name='article_likes', blank=True) dislikes = models.ManyToManyField(User, related_name='article_dislikes', blank=True)# likes field tags = TaggableManager() def snippet(self): return self.message[:30]+ '........' def __str__(self): return self.subject # def highrated(request): def get_absolute_url(self): return reverse('article_details', kwargs={'pk': self.pk}) def get_message_as_markdown(self): return mark_safe(markdown(self.message, safe_mode='escape')) def get_like_url(self): return reverse('like_toggle', kwargs={'pk': self.pk}) def get_dislike_url(self): return reverse('dislike_toggle', kwargs={'pk': self.pk})
class SmartHome(models.Model): """ A SmartHome contains several smart devices, sensors, etc... """ name = models.CharField(max_length=256, verbose_name=_("Name of the smart home")) description = models.TextField( verbose_name=_("Additional information for the smart home")) address = models.CharField( max_length=256, verbose_name=_( "Address of the smart home (e.g., used for weather information)")) created_by = UserForeignKey( auto_user_add=True, editable=False, ) created_at = models.DateTimeField(auto_now_add=True) class Meta: verbose_name = _("Smart Home") verbose_name_plural = _("Smart Homes") def __str__(self): return self.name
class SnippetFavorite(BaseModel): objects = SnippetFavoriteManager() snippet = models.ForeignKey( "Snippet", related_name="snippet_favorites", verbose_name="Snippet", on_delete=models.CASCADE, null=False, blank=False, ) user = UserForeignKey( auto_user_add=True, related_name="snippet_favorites", verbose_name="User", editable=False, on_delete=models.CASCADE, ) def __str__(self): return f"{force_str(self.snippet)} - {force_str(self.user)}" class Meta: constraints = [ models.UniqueConstraint(fields=["snippet", "user"], name="user_and_snippet_uniq") ]
class Neonato(models.Model): dato = models.CharField(max_length=100, verbose_name='Datos del R.N.', help_text='Apellido Paterno Apellido Materno RN') fecha = models.DateTimeField(default=datetime.now, blank=True, verbose_name='Fecha y Hora Nacimiento') sexo = models.CharField(max_length=20, choices=(('Masculino', 'Masculino'), ('Femenino', 'Femenino'))) tipo = models.CharField(max_length=20, verbose_name='Tipo - Parto', choices=(('Natural', 'Natural'), ('Cesarea', 'Cesarea'))) dni = models.CharField(max_length=8, verbose_name='DNI - Madre o Tit.') reg = models.BooleanField( default=False, verbose_name='Registrado', help_text= 'Registrado-Marcara solo en Modulo cuando Neonato es Hospitalizado') user = UserForeignKey(auto_user_add=True, verbose_name='Usuario') transf = models.CharField(max_length=20, verbose_name='Transferir.', choices=(('Ucin', 'Ucin'), ('InterMedio - 1', 'InterMedio - 1'), ('InterMedio - 2', 'InterMedio - 2')), blank=True) def __str__(self): return self.dato def save(self, *args, **kwargs): self.dato = self.dato.upper() super(Neonato, self).save(*args, kwargs)
class Rack(models.Model): name = models.CharField(max_length=150, unique=True) max_size = models.IntegerField() uid = models.CharField(max_length=50, unique=True) created_by = UserForeignKey(auto_user_add=True, null=True, related_name='rack_created_by') updated_by = UserForeignKey(auto_user_add=True, related_name='rack_updated_by') created_at = models.DateTimeField(auto_now_add=True, null=True) updated_at = models.DateTimeField(auto_now=True, null=True) def __str__(self): return "%s" % self.name def __unicode__(self): return u'%s' % self.name
class ClaseModelo2(models.Model): estado = models.BooleanField( default=True ) #'default' para que cada vez que se agreguen datos por default sea verdadero el campo. fc = models.DateTimeField( auto_now_add=True ) #'auto_now_add' para que solo se actualice la fecha cuando se agregue el campo. fm = models.DateTimeField( auto_now=True ) #'auto_now' para que siempre que pase algo con el registro se actualice la fecha. # uc = models.ForeignKey(User, on_delete=models.CASCADE) #Conexión con la user que ya tiene django por default. # um = models.IntegerField(blank=True,null=True) #No se pueden tener dos ForeignKey, por lo tanto sera tipo entero y puede quedar en blanco. uc = UserForeignKey(auto_user_add=True, related_name='+') um = UserForeignKey(auto_user=True, related_name='+') class Meta: abstract = True #Para que a la hora de hacer migraciones, no tome encuenta esta clase.
class TaskLogs(models.Model): # Si desea que cuando se elimine un usuario, tambien se eliminen sus logs descomente linea 23 y comente 24 # user_id = UserForeignKey(auto_user_add=True, selete=models.CASCADE) user_id = UserForeignKey(auto_user_add=True) date_log = models.DateTimeField(auto_now_add=True, null=False, blank=True) action_log = models.CharField(max_length=200, verbose_name=u"Logs") class Meta: verbose_name = ('Log de usuarios') verbose_name_plural = ('Logs de usuarios')
class Comment(models.Model): article = models.ForeignKey(Article, on_delete=models.CASCADE) user = UserForeignKey(auto_user_add=True, on_delete=models.CASCADE) reply = models.ForeignKey('Comment', null=True, related_name='replies', on_delete=models.CASCADE) content = models.TextField(max_length = 160, default="") timestamp = models.DateTimeField(auto_now_add=True) def __str__(self): return '{}-{}'.format(self.article.subject, str(self.user.username))
class Dashboard(models.Model): title = models.CharField(max_length=255) content = models.TextField(blank=True, null=True) user = UserForeignKey(auto_user_add=True) created_at = models.DateTimeField(auto_now_add=True) modified_at = models.DateTimeField(auto_now=True) class Meta: ordering = ('title', )
class UserLanguages(models.Model): user = UserForeignKey(auto_user_add=True) learning_language = models.ForeignKey(Language, null=True, on_delete=models.DO_NOTHING,related_name='learning') preferred_language = models.ForeignKey(Language, null=True, on_delete=models.DO_NOTHING,related_name='preffered') def clean(self, *args, **kwargs): if self.learning_language == self.preferred_language: raise ValidationError("Please select different languages") super(UserLanguages,self.clean(*args, **kwargs))