Проектирую базу данных оборудования. Встал вопрос правильной организации связей между моделями.
На данный момент код следующий:
class Person(models.Model):
fullname = models.CharField(max_length=30)
#shop_accounts = models.ManyToManyField('ShopAccount', blank=True)
#stuff = models.ManyToManyField('Staff', blank=True)
def __str__(self):
return str(self.fullname)
class Shop(models.Model):
name = models.CharField(max_length=30)
url = models.CharField(max_length=100)
#accounts?
#persons?
def __str__(self):
return str(self.name)
class ShopAccount(models.Model):
login = models.CharField(max_length=30)
password = models.CharField(max_length=100)
person = models.ForeignKey(Person, on_delete=models.CASCADE)#on_delete=models.SET(Person)
shop = models.ForeignKey(Shop, on_delete=models.CASCADE)
def __str__(self):
return str(self.login)
class Stuff(models.Model):
name = models.CharField(max_length=30)
person = models.ForeignKey(Person, on_delete=models.CASCADE)#on_delete=models.SET(Person)
shop = models.ForeignKey(Shop, on_delete=models.CASCADE)
shop_account = models.ForeignKey(ShopAccount, on_delete=models.CASCADE)
comment = models.CharField(max_length=140, blank=True)
#here will be additional attributes
def __str__(self):
return str(self.name)
Мне хотелось бы чтобы при заполнении таблицы Stuff, я, выбирая магазин(Shop) видел только тех лиц(Person), которые в нем покупали, и соответствующий аккаунт был жестко привязан к магазину и лицу. Думаю что правильнее решить это на уровне моделей, а не во фронтэнде. Как в данном случае лучше было бы организовать отношения между этими моделями?