can a manytomany relationship have two foreign keys in Django? -


i have 2 models, company , contract. each contract between 2 companies. now, seems there manytomany relationship between company , contract, e.g. company can have many contracts , contract between more 1 company. correct? if yes, how specify in django? through 2 foreign keys in 1 model?

class company(models.model):     company_name = models.charfield(max_length = 30)     address = models.charfield(max_length = 100)     website = models.charfield(max_length = 30)     email = models.emailfield(max_length = 30)  class contract(models.model):     company_1 = models.foreignkey(company, related_name="%(app_label)s_%(class)s_related_company1")     company_2 = models.foreignkey(company, related_name="%(app_label)s_%(class)s_related_company2")     company = models.manytomanyfield(company)     contract_date = models.datefield()     consideration = models.decimalfield(max_digit =10, decimal_places = 2) 

if contract between 2 companies, remove line. mere fact contract model has 2 different foreign key fields company imply contract between 2 companies , each company may have multiple contracts accessible using respective related_name's.

class contract(models.model):     company_1 = models.foreignkey(company, related_name="%(app_label)s_%(class)s_related_company1")     company_2 = models.foreignkey(company, related_name="%(app_label)s_%(class)s_related_company2")     # company = models.manytomanyfield(company)     contract_date = models.datefield()     consideration = models.decimalfield(max_digit =10, decimal_places = 2) 

if, however, want contract involving more 2 companies, remove 2 foreignkeys , use manytomany relationship so. similarly, automatically imply particular contract shared companies listed under relationship. may access contracts of particular company via related_name well.

class contract(models.model):     # company_1 = models.foreignkey(company, related_name="%(app_label)s_%(class)s_related_company1")     # company_2 = models.foreignkey(company, related_name="%(app_label)s_%(class)s_related_company2")     companies = models.manytomanyfield(company, related_name=whatever_you_want)     contract_date = models.datefield()     consideration = models.decimalfield(max_digit =10, decimal_places = 2) 

Comments