2015-12-16 6 views
0

Мне нужно установить модель с первичным ключом и внешним ключом. То же самое со второй моделью.2 первичный ключ модели django и внешний ключ

Первая модель имеет по умолчанию в tcu_id установлен в качестве первичного ключа:

class Tcu(models.Model): 
    imei = models.CharField(max_length=30, unique=True) 

Вторая модель имеет первичный ключ значение ИСТИНА, и внешнего ключа от модели TCU:

class Sim(models.Model): 
    phone_num = models.CharField(max_length=30, primary_key=True) 
    tcu = models.ForeignKey(Tcu, null=True, blank=True) 

Это работает хорошо, но проблема возникает сейчас, когда я пытаюсь добавить внешний ключ к первой модели:

class Tcu(models.Model): 
     imei = models.CharField(max_length=30, unique=True) 
     phone_num = models.ForeignKey(Sim, null=True, blank=True) 

В TCU phone_num = models.ForeignKey (Sim) NameError: имя 'Sim' не определен

+0

Вы импортировали модель Sim? – Balas

+2

Я не могу понять, зачем вам FK в обоих направлениях. Это не имеет смысла. Какова фактическая природа отношений между Симом и Тку? –

+0

Ты будешь! Благодарю вас! Я тестирую некоторые функции на своем локальном хосте – picador

ответ

3

В Django documentation for the ForeignKey field состояний:

If you need to create a relationship on a model that has not yet been defined, you can use the name of the model, rather than the model object itself.

Так что в вашем случае, это было бы:

class Tcu(models.Model): 
    imei = models.CharField(max_length=30, unique=True) 
    phone_num = models.ForeignKey('Sim', blank = True) 

class Sim(models.Model): 
    phone_num = models.CharField(max_length=30, primary_key=True) 
    tcu = models.ForeignKey(Tcu, null=True, blank=True) 
Смежные вопросы