Взаимосвязанный ForegnKey - PullRequest
       1

Взаимосвязанный ForegnKey

0 голосов
/ 18 октября 2011

У меня есть задание:

  • Создать модель базы данных, по существу состоящую из «студентов» и «групп».карточка ',' группа '( должен быть ForeigKey to Group! )
  • ' Группа 'содержит:' имя группы 'и' капитан '( должен быть внешним ключом для Student!)

Теперь я столкнулся - прямо сейчас это невозможно.Итак, я сделал это следующим образом:

class Group(models.Model):
    group_name = models.CharField(max_length=50)    


class Student(models.Model):
    name = models.CharField(max_length=50)
    birth_date = models.DateField()
    std_ID_card = models.IntegerField()
    group = models.ForeignKey(Group)


class Captain(models.Model):
    student = models.OneToOneField(Student)
    group = models.OneToOneField(Group)

У меня есть более элегантный и правильный способ сделать это?

Ответы [ 2 ]

2 голосов
/ 18 октября 2011

Попробуйте добавить related_name :

class Student(models.Model):
    name = models.CharField(max_length=50)
    birth_date = models.DateField()
    std_ID_card = models.IntegerField()
    group = models.ForeignKey('Group')

class Group(models.Model):
    group_name = models.CharField(max_length=50)    
    captain = models.ForeignKey('Student', related_name='%(class)s_captain')
1 голос
/ 18 октября 2011

Почему оригинальная структура невозможна?

class Group(models.Model):
    group_name = models.CharField(max_length=50)    
    captain = models.ForeignKey('Student')

class Student(models.Model):
    name = models.CharField(max_length=50)
    birth_date = models.DateField()
    std_ID_card = models.IntegerField()
    group = models.ForeignKey(Group)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...