Django, как импортировать класс модели в другой класс модели? - PullRequest
1 голос
/ 17 февраля 2020

У меня есть два имени приложения Business и ChartofAccounts,

enter image description here

в моем бизнесе. У меня есть

class businessType(models.Model):
    Name = models.CharField(max_length=500)
    Description = models.CharField(max_length=500)
    RecordStatus = models.CharField(max_length=500, null=True, choices=Pending_Request, blank=True)

и мои ChartofAccounts.models, которые у меня есть

class ChartOfAccount(models.Model):
    AccountNo = models.IntegerField()
    Account_Name = models.CharField(max_length=500)
    Account_Type = models.CharField(max_length=500)
    Details_Type = models.CharField(max_length=500)
    Description = models.CharField(max_length=500)
    BusinessTypeID = models.ForeignKey(Business, related_name='+', on_delete=models.CASCADE, blank=True)
    RecordStatus = models.CharField(max_length=500, null=True, choices=Pending_Request, blank=True)

Я не знаю, как импортировать business.models в моем приложении ChartofAccounts, есть идеи?

Что я пробовал, это

from myAccounting import Business

и ошибка

ОБНОВЛЕНИЕ

, когда я попробовал это

from Business.models import Business

BusinessTypeID = models.ForeignKey('Business.Business', related_name='+', on_delete=models.CASCADE, blank=True)

ошибка говорит

enter image description here

ОБНОВЛЕНИЕ

from business.models import business

Я переименовываю свое приложение Business в приложение для бизнеса, то же самое идет в chartofAccounts но та же ошибка

enter image description here

1 Ответ

3 голосов
/ 17 февраля 2020

Он определен в модуле models, поэтому вы импортируете его с помощью:

from Business<b>.models</b> import Business

имя приложения Business, поэтому оно должно быть Business.models, а не myAccounting.models .

При этом может быть проще сослаться на модель со строковым литералом, тогда вам вообще не нужно импортировать это:

from django.db import models

class ChartOfAccount(models.Model):
    AccountNo = models.IntegerField()
    Account_Name = models.CharField(max_length=500)
    Account_Type = models.CharField(max_length=500)
    Details_Type = models.CharField(max_length=500)
    Description = models.CharField(max_length=500)
    BusinessTypeID = models.ForeignKey(<b>'Business.Business'</b>, related_name='+', on_delete=models.CASCADE, blank=True)
    RecordStatus = models.CharField(max_length=500, null=True, choices=Pending_Request, blank=True)

Это также помогает избежать круговой импорт , как @ RHSmith159 говорит .

Примечание : модули и имена полей обычно пишутся в slug_case, а не PerlCase. Поэтому рекомендуется назвать ваше приложение business вместо Business и поле account_no вместо AccountNo.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...