Если внешние ключи, которые определяют отношение многих ко многим, необходимы в любом случае, есть ли какие-либо дополнительные затраты на уровне базы данных, чтобы сообщить Django, что они определяют много- для многих "через" отношения? Кроме того, может ли внешний ключ оставаться в этом случае недействительным?Стоимость отношений Django от многих до многих
Что должно быть там:
class StockLine(models.Model) # a line of stock (ie a batch)
# one or other of the following two is null depending on
# whether Stockline was manufactured in-house or bought in.
# (maybe both if it's been in stock "forever", no computer records)
production_record = models.ForeignKey('ProductionRecord',
null=True, blank=True)
purchase_order = models.ForeignKey('PurchaseOrder',
null=True, blank=True)
itemdesc = models.ForeignKey('ItemDesc')
# other fields ...
class ItemDesc(models.Model) # a description of an item
# various fields
class ProductionRecord(models.Model) # desc of a manufacturing process
# various fields
Существует подразумеваемой много-ко-многим между ProductionRecord и ItemDesc через засыпи. Учитывая, что один из внешних ключей обнуляемая, я могу сделать M2M явного добавления
class ItemDesc(models.Model)
production_records = models.ManyToManyField(ProductionRecord,
through='StockLine')
и если я могу, есть ли дополнительные расходы на уровне базы данных, или это изменение чисто на уровне Django ORM ? Это не существенное отношение, чтобы сделать явным, и это не будет сильно использоваться, но это, безусловно, упростит программирование.