Skip to content
Snippets Groups Projects
Commit 95856091 authored by Agustín Céspedes's avatar Agustín Céspedes
Browse files

recreated models

parent ab06b0fc
No related branches found
No related tags found
2 merge requests!2PROD1.0,!1PROD 0.1
from django.contrib import admin
from .models import Empresa, Competencia, Mercado
from .models import Company, Market, Source, CompanySource, Competitor, Agency, Advertisement
admin.site.register(Empresa)
admin.site.register(Competencia)
admin.site.register(Mercado)
admin.site.register(Company)
admin.site.register(Market)
admin.site.register(Source)
admin.site.register(CompanySource)
admin.site.register(Competitor)
admin.site.register(Agency)
admin.site.register(Advertisement)
......@@ -2,31 +2,69 @@ from django.db import models
from django.contrib.auth.models import User
from django_countries.fields import CountryField
#This model creates the market where companies can work
class Market(models.Model):
name = models.CharField(max_length=200)
def __str__(self):
return self.name
class Source(models.Model):
name = models.CharField(max_length=200)
url = models.CharField(max_length=200)
#This is the model for Companies that are going to be registered even thought they are not clients in the system
class Empresa(models.Model):
nombre = models.CharField(max_length=200)
pais = CountryField(blank_label='(selecciona país)', null=True) # ISO 3166 for Country Codes
google_ads = models.CharField(max_length=200, blank=True, null=True)
meta_ads = models.CharField(max_length=200, blank=True, null=True)
usuarios = models.ManyToManyField(User, blank=True)
class Company(models.Model):
name = models.CharField(max_length=200)
market = models.ForeignKey(Market, on_delete=models.SET_NULL, blank=True, null=True)
country = CountryField(blank_label='(selecciona país)', null=True) # ISO 3166 for Country Codes
users = models.ManyToManyField(User, blank=True)
competitors = models.ManyToManyField('self', through='Competitor', related_name='competitor_of')
sources = models.ManyToManyField(Source, through='CompanySource', related_name='companies')
def __str__(self):
return self.name
class Agency(models.Model):
company = models.OneToOneField(Company, on_delete=models.CASCADE, related_name='agency')
managed_companies = models.ManyToManyField(Company, related_name='managed_by_agencies')
def __str__(self):
return self.nombre
return self.company.name
#This is the model for the competitors it is a relation of a Company to another.
class Competencia(models.Model):
empresa = models.ForeignKey(Empresa, related_name='empresa', on_delete=models.CASCADE)
competidor = models.ForeignKey(Empresa, related_name='competidor', on_delete=models.CASCADE)
class Competitor(models.Model):
company = models.ForeignKey(Company, on_delete=models.CASCADE, related_name='company_competitors')
competitor = models.ForeignKey(Company, on_delete=models.CASCADE, related_name='competitor_competitors')
class Meta:
unique_together = ('empresa', 'competidor')
unique_together = ('company', 'competitor')
def __str__(self):
return f"{self.empresa.nombre} competidor: {self.competidor.nombre}"
return f"{self.company.name} - Competitor: {self.competitor.name}"
class CompanySource(models.Model):
company = models.ForeignKey(Company, on_delete=models.CASCADE)
source = models.ForeignKey(Source, on_delete=models.CASCADE)
code = models.CharField(max_length=50) # The internal id of the company for this source
def __str__(self):
return f"{self.company.name} - Source: {self.source.name}, Code: {self.code}"
class Advertisement(models.Model):
company = models.ForeignKey(Company, on_delete=models.CASCADE)
source = models.ForeignKey(Source, on_delete=models.CASCADE)
market = models.ForeignKey(Market, on_delete=models.CASCADE)
text_content = models.TextField()
url = models.URLField()
reach = models.IntegerField(blank=True, null=True)
#This model creates the market where companies can work
class Mercado(models.Model):
mercado = models.CharField(max_length=200)
def __str__(self):
return self.mercado
return f"Advertisement: {self.text_content[:50]}..."
\ No newline at end of file
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment