Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- accounts/models.py
- class Role(models.Model):
- ROLE_CHOICES = (
- ('agent', 'Agent'),
- ('agency', 'Agency'),
- ('manufacturer', 'Manufacturer'),
- )
- role = models.CharField(max_length=15, choices=ROLE_CHOICES)
- def __str__(self):
- return self.role
- class User(AbstractUser):
- role = models.ForeignKey(
- Role,
- on_delete=models.CASCADE,
- blank=True,
- null=True,
- )
- def __str__(self):
- return self.username
- def save(self, *args, **kwargs):
- if not self.pk: # the instance is created
- self.role, created = Role.objects.get_or_create(role="agent")
- return super().save(*args, **kwargs)
- agency/models.py
- class Agency(models.Model):
- owner = models.OneToOneField(User, on_delete=models.CASCADE)
- name = models.CharField(
- max_length=200,
- blank=False,
- null=False)
- city = models.CharField(max_length=150, blank=False, null=False)
- street = models.CharField(max_length=150, blank=True, null=True)
- country = models.CharField(max_length=150, blank=True, null=True)
- mobile_number = PhoneNumberField()
- email = models.EmailField(blank=False, null=False)
- vat_number = models.CharField(max_length=40, blank=False, null=False)
- agents/models.py
- class Agent(models.Model):
- SEX_CHOICE = (
- ('male', 'Male'),
- ('female', 'Female'),
- )
- owner = models.OneToOneField(User, on_delete=models.CASCADE)
- agencies = models.ForeignKey(
- Agency,
- related_name="agents",
- on_delete=models.CASCADE)
- manufacturers = models.ForeignKey(
- Manufacturer,
- related_name="agents_manufacturer",
- on_delete=models.CASCADE,
- blank=True,
- null=True)
- date_of_birth = models.DateField(blank=True, null=True)
- sex = models.CharField(max_length=6, choices=SEX_CHOICE)
- city = models.CharField(max_length=150, blank=False, null=False)
- street = models.CharField(max_length=150, blank=True, null=True)
- country = models.CharField(max_length=150, blank=True, null=True)
- mobile_number = PhoneNumberField()
- class Manufacturer(models.Model):
- owner = models.OneToOneField(
- User, on_delete=models.CASCADE, related_name="manufacturer")
- agency = models.ForeignKey(
- Agency,
- blank=True,
- null=True,
- related_name="agency_manufacturer",
- on_delete=models.CASCADE)
- name = models.CharField(
- max_length=200,
- blank=False,
- null=False)
- city = models.CharField(max_length=150, blank=False, null=False)
- street = models.CharField(max_length=150, blank=True, null=True)
- country = models.CharField(max_length=150, blank=True, null=True)
- shops/models.py
- class Shop(models.Model):
- agent = models.ForeignKey(Agent, on_delete=models.CASCADE, null=True)
- name = models.CharField(max_length=150, blank=False, null=False)
- city = models.CharField(max_length=150, blank=False, null=False)
- street = models.CharField(max_length=150, blank=True, null=True)
- country = models.CharField(max_length=150, blank=True, null=True)
- mobile_number = PhoneNumberField()
- vat_number = models.CharField(max_length=40, blank=False, null=False)
- def __str__(self):
- return self.name
- class Category(models.Model):
- name = models.CharField(max_length=150, db_index=True)
- slug = models.SlugField(max_length=150, db_index=True)
- description = models.TextField()
- parent = models.ForeignKey('self', on_delete=models.CASCADE, null=True, blank=True)
- def __str__(self):
- return self.name
- class Product(models.Model):
- product_code = models.CharField(max_length=50, blank=False, null=False)
- agencies = models.ForeignKey(
- Agency,
- on_delete=models.CASCADE,
- related_name="product_agencies",
- null=True)
- manufacturer = models.ForeignKey(
- Manufacturer,
- related_name="product_manufacturers",
- on_delete=models.CASCADE,
- null=True)
- name = models.CharField(max_length=120, db_index=True)
- category = models.ForeignKey(
- Category,
- related_name="product_category",
- null=True,
- on_delete=models.CASCADE)
- price = models.DecimalField(max_digits=10, decimal_places=2)
- min_price = models.DecimalField(max_digits=10, decimal_places=2)
- packaging = models.CharField(max_length=120)
- package_dimension = models.CharField(max_length=120, blank=True, null=True)
- package_weight = models.PositiveIntegerField(default=1)
- orders/models.py
- class Order(models.Model):
- product_code = models.CharField(max_length=50, blank=False, null=False)
- agents = models.ForeignKey(
- Agent,
- on_delete=models.CASCADE,
- related_name="order_agents")
- shops = models.ForeignKey(
- Shop,
- related_name="order_manufacturers",
- on_delete=models.CASCADE)
- product = models.ForeignKey(
- Product,
- related_name="order_product",
- on_delete=models.CASCADE)
- quantity = models.PositiveIntegerField(default=1)
- unit = models.CharField(max_length=50)
Add Comment
Please, Sign In to add comment