Обратный метод доступа конфликтует с Django
В модели у меня есть такая ошибка:
apps.Company.owner: (fields.E304) Reverse accessor for 'Company.owner' clashes with reverse accessor for 'Company.owner'.
HINT: Add or change a related_name argument to the definition for 'Company.owner' or 'Company.owner'.
main.Company.owner: (fields.E304) Reverse accessor for 'Company.owner' clashes with reverse accessor for 'Company.owner'.
HINT: Add or change a related_name argument to the definition for 'Company.owner' or 'Company.owner'.
Вот код модели:
class Company(models.Model):
owner = models.ForeignKey(User, verbose_name="User", on_delete=models.CASCADE, default=None, null=True, blank=True)
name = models.CharField(max_length=128, blank=True, null=True, default=None)
created = models.DateTimeField(auto_now_add=True, auto_now=False, null=True, blank=True)
updated = models.DateTimeField(auto_now_add=False, auto_now=True, null=True, blank=True)
def create_folder(**kwargs):
instance = kwargs.get('instance')
print(instance.id)
os.mkdir(f"media/company_{instance.id}")
def delete_folder(**kwargs):
instance = kwargs.get('instance')
print(instance.id)
full_patch_folder = f"media/company_{instance.id}"
if os.path.isdir(full_patch_folder):
shutil.rmtree(full_patch_folder)
post_save.connect(create_folder, sender=Company)
post_delete.connect(delete_folder, sender=Company)
class Folder(models.Model):
id = models.AutoField(primary_key=True)
name = models.CharField(max_length=128, blank=True, null=True, default=None)
unique_folder_name = models.CharField(max_length=128, blank=True, null=True, default=None)
full_path = models.CharField(max_length=256, blank=True, null=True, default=None)
parent_folder = models.IntegerField(verbose_name="Parent Folder", blank=True, null=True, default=0)
company = models.ForeignKey(Company, verbose_name="Company", on_delete=models.CASCADE, default=None)
share = models.BooleanField(verbose_name="Share folder", null=True, default=False)
created = models.DateTimeField(auto_now_add=True, auto_now=False, null=True, blank=True)
updated = models.DateTimeField(auto_now_add=False, auto_now=True, null=True, blank=True)
def __str__(self):
return "(id.%s) - %s - %s - %s - %s" % (self.id, self.name, self.unique_folder_name, self.share, self.company)
я добавлял related_name='Company.company'
и 'User.user'
в каждый метод, но не работает. Помогите решить. Спасибо
У вас 2 приложения, в обоих модель Company
и в обеих связь с пользователем. Укажите для одной или для обеих корректный related_name
.
Корректный related_name
состоит из латинских символов, цифр и знака подчеркивания, если кратко. related_name
по отношению к оной модели должны быть уникальны.
Т.е.
#apps
class Company(...):
owner = models.ForeighnKey(..., related_name='apps_companies')
#main
class Company(...):
owner = models.ForeighnKey(..., related_name='main_companies')