Я разработал определенное приложение, которое я нашел с указанной базой данных и схемой модели. Я использую Django версии 1.8.2. Ниже представлена проблема. Ненужные поля опущены, имена моделей придуманы для примера, потому что я не могу раскрывать. Рассмотрю следующие модели A и B.Как создать первичный ключ состоит из двух полей в Django?
class B (models.Model):
name = models.CharField(max_length=100)
class A (models.Model):
name = models.CharField(max_length=100, primary_key=True)
related_name = models.ForeignKey(B, null=True, blank=True)
После долгого времени проекта, вероятность того, что там может быть несколько одноименных А, но с разным внешним ключом B. В данном конкретном случае, я хотел бы модель первичного ключа «А» состояла из двух полей: имя и родственное имя. Как создать такой ключ состоит из двух полей в django?
Можно ли изменить первичный ключ 'Ā' быть Джанго по умолчанию' id' вместо этого? Это похоже на очевидное решение. –
Привет :-) Спасибо за ваш ответ. Это хорошее решение, но в моем случае многие таблицы имеют в качестве таблицы внешних ключей «А», и изменение идентификатора по умолчанию будет действительно большим усилием. Более того, много кода, использующего такие запросы, как «A.objects.get (pk =« something ») и изменение типа первичного ключа, требует большой работы. По этой причине я ищу решение, которое не меняет тип ключа. База имеет много лет. –
Хорошо. В этом случае я не думаю, что это можно решить в джанго. Для каждого экземпляра Django требуется единственный уникальный первичный ключ. Даже если вы можете использовать составной первичный ключ, я не уверен, что это хорошая идея, когда одно из полей в pk является нулевым внешним ключом. –