Я постараюсь ответить на вашу актуальную проблему, потому что то, о чем вы спрашиваете в этом вопросе, - это проблема с вашим предлагаемым решением, которое, как отмечали многие, не совсем идеально.
В комментариях вы упомянули это:
Я постараюсь объяснить. Итак, у нас есть 2 модели: Пользователь и Книга.У пользователя есть книга под названием «Титаник» с некоторым содержанием.Теперь другой пользователь тоже хочет иметь отношение к этой книге.Но второй пользователь хочет точно такую же книгу, но она должна называться «Корабль идет под». Я скопировал бы книгу и переименовал ее.- Я знаю, я мог бы также поместить содержание книги в другую модель - но моя модель немного сложнее.
Похоже, вам нужно отследить три вещи:
- Пользователи
- Их книги
- Некоторые пользовательские заметки, которые пользователи имеют о своей "собственной" книге.
Для каждого Book
храните его общиеинформация, например:
class Author(models.Model):
name = models.CharField(max_length=50)
email = models.EmailField()
def __unicode__(self):
return unicode(self.name)
class Book(models.Model):
title = models.CharField(max_length=100)
author = models.ManyToMany(Author)
isbn = models.CharField(max_length=13)
# and so on
def __unicode__(self):
return unicode(self.title)
Теперь вам нужно сохранить Книгу -> Отношение пользователя, например, у одного пользователя может быть много книг, у двух пользователей может быть одна и та же книга с прикрепленной мета-информацией.
class BookClub(models.Model):
username = models.ForeignKey(User)
book = models.ForeignKey(Book)
comments = models.TextField()
Если вы структурируете свои модели таким образом, вы сможете выполнять такие запросы:
- «Сколько книг у каждого участника?»
- «Какая книга самая популярная?»
- «Какая книга наименее популярна?»
- «Какой автор самый популярный?»