from django.db import models
from django.contrib.auth.models import AbstractUser
class Customer(AbstractUser):
address_line = models.CharField(max_length=255)
city = models.CharField(max_length=255)
postal_code = models.CharField(max_length=10)
phone_number = models.CharField(max_length=20)
origin_country = models.CharField(max_length=255)
profile_picture = models.ImageField(upload_to='customer_profile_pics', null=True, blank=True)
class Chef(AbstractUser):
address_line = models.CharField(max_length=255)
city = models.CharField(max_length=255)
postal_code = models.CharField(max_length=10)
phone_number = models.CharField(max_length=20)
origin_country = models.CharField(max_length=255)
profile_picture = models.ImageField(upload_to='chef_profile_pics', null=True, blank=True)
class Meal(models.Model):
name = models.CharField(max_length=255)
description = models.TextField()
picture = models.ImageField(upload_to='meal_pics')
country = models.CharField(max_length=255)
chef = models.ForeignKey(Chef, on_delete=models.CASCADE, related_name='meals')
customers = models.ManyToManyField(Customer, blank=True, related_name='meals')
class Discussion(models.Model):
message = models.TextField()
timestamp = models.DateTimeField(auto_now_add=True)
customer = models.ForeignKey(Customer, on_delete=models.CASCADE, null=True, blank=True, related_name='discussions')
chef = models.ForeignKey(Chef, on_delete=models.CASCADE, null=True, blank=True, related_name='discussions')
This is my models.py
file
I get the following error while making migrations
SystemCheckError: System check identified some issues:
ERRORS:
meals.Chef.groups: (fields.E304) Reverse accessor for 'Chef.groups' clashes with reverse accessor for 'Customer.groups'.
HINT: Add or change a related_name argument to the definition for 'Chef.groups' or 'Customer.groups'.
meals.Chef.user_permissions: (fields.E304) Reverse accessor for 'Chef.user_permissions' clashes with reverse accessor for 'Customer.user_permissions'.
HINT: Add or change a related_name argument to the definition for 'Chef.user_permissions' or 'Customer.user_permissions'.
meals.Customer.groups: (fields.E304) Reverse accessor for 'Customer.groups' clashes with reverse accessor for 'Chef.groups'.
HINT: Add or change a related_name argument to the definition for 'Customer.groups' or 'Chef.groups'.
meals.Customer.user_permissions: (fields.E304) Reverse accessor for 'Customer.user_permissions' clashes with reverse accessor for 'Chef.user_permissions'.
HINT: Add or change a related_name argument to the definition for 'Customer.user_permissions' or 'Chef.user_permissions'.
I tried some solutions on the internet but it didn't work, i want to test the app on my browser but making the migrations keeps showing me this error, please help!!!!
I am really new to Django Back End Dev, I tried to troubleshoot the issue but i couldn't.
Why create two User models ? With same field ?
AbstractUser
is for defining your custom model used for authentication. Are you sure you have understood that ?
For resolving your case, you have to override user_permissions
and groups
from Abstract user for redefine related_name of this fields...
class Chef(...):
groups = models.ManyToManyField(
Group,
related_name="XXXXX",
related_query_name="user",
)
user_permissions = models.ManyToManyField(
Permission,
related_name="YYYYY",
related_query_name="user",
)