Как описать это отношение в модели Джанго? - PullRequest
0 голосов
/ 05 декабря 2011

таблица пользователей:

   --------------------
   | id | name | age |
   --------------------
   |    |      |     |
   --------------------

модель:

class User(models.Model):
    name = models.CharField(max_length=30)
    age = models.SmallIntegerField()

стол для домашних животных:

   --------------------
   | id | name | intro |
   --------------------
   |    |      |       |
   --------------------

модель:

class Pet(models.Model):  
    species = models.CharField(max_length=30)
    intro = models.TextField()  

Теперь я хочу описать это соотношение:
У пользователя может быть несколько домашних животных (с уникальными видами), и я хочу сохранить время, когда пользователь получил это домашнее животное. в базе данных это должно выглядеть так:

   --------------------------------
   | id | user_id | pet_id | since |
   --------------------------------
   |    |         |        |       |
   --------------------------------

но я не знаю, как описать это в модели Джанго ...

Ответы [ 2 ]

2 голосов
/ 05 декабря 2011

Вы используете сквозную модель.По сути, вы определяете свою собственную таблицу-посредник вместо того, чтобы Django делал это автоматически:

class User(models.Model):
    ...
    pets = models.ManyToManyField(Pet, through='UserPet')

class UserPet(models.Model):
    user = models.ForeignKey(User)
    pet = models.ForeignKey(Pet)
    since = models.DateTimeField(auto_now_add=True)
0 голосов
/ 05 декабря 2011

Попробуйте это:

class UsersPet(models.Model):
    pet = models.ForeignKey(Pet)
    user = models.ForeignKey(User) 
    since = models.DateTime()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...