Может ли один модельный класс иметь определенную связь с другим набором модельных классов django? - PullRequest
0 голосов
/ 28 сентября 2018

Это мои модели:

class company(models.Model):
    User = models.ForeignKey(User,related_name="Company_Owner",on_delete=models.CASCADE,null=True,blank=True)
    Name = models.CharField(max_length=50,blank=False)

class group(models.Model):
    User = models.ForeignKey(settings.AUTH_USER_MODEL,on_delete=models.CASCADE,null=True,blank=True)
    group_Name = models.CharField(max_length=32,unique=True,error_messages={'unique':"This Group Name has already been registered"})
    Company = models.ForeignKey(company,on_delete=models.CASCADE,null=True,blank=True,related_name='Company_group')

class ledger1(models.Model):
    User = models.ForeignKey(settings.AUTH_USER_MODEL,on_delete=models.CASCADE,null=True,blank=True)
    Company = models.ForeignKey(company,on_delete=models.CASCADE,null=True,blank=True,related_name='Companys')
    Creation_Date = models.DateField(default=datetime.now)
    name = models.CharField(max_length=32,unique=True)

Итак, это мои модели, которые я создал для своего бухгалтерского приложения ... Модель компании связана с группой и регистром через внешний ключ ... Я хочупредоставить разные группы и регистры для разных компаний, которые создал пользователь ...

Это так же, как то, что мы делаем в django для всех пользователей, нам нужно сделать что-то подобное для пользователей:

 filter(User=request.user)

Точно так же я могу сделать что-то подобное для своих компаний?Я имею в виду, что у одной компании будет другой набор групп и бухгалтерских книг.

Возможно ли это в Django?Если это может Кто-нибудь помочь мне решить эту проблему ...

Заранее спасибо

1 Ответ

0 голосов
/ 28 сентября 2018

Если я хорошо понимаю, что вам нужно, это уже можно сделать благодаря внешнему ключу для модели вашей компании в группе и в бухгалтерской книге.Вам просто нужно использовать в запросе значение «related_name», которое вы указали в модели.https://docs.djangoproject.com/en/2.1/topics/db/queries/

Пример:

# get the companies created by the user
companies = company.objects.filter(User=request.user)

# select the company you need for example the first one
mycompany = companies.first()

# then get groups or ledgers related to it
groups = mycompany.Company_group.all()
ledgers = mycompany.Companys.all()

Просто предложение: старайтесь всегда использовать один и тот же формат при объявлении классов и атрибутов (как всегда в нижнем регистре), тогда его станет легче читать ииспользуйте их.

...