Я постараюсь ответить на вашу актуальную проблему, потому что то, о чем вы просите в вопросе, является проблемой с вашим предлагаемым решением, которое, как многие из них указали, на самом деле не идеально.
В комментариях вы упоминаете это:
я постараюсь объяснить .. Так что у нас есть 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()
Если вы структурировать ваши модели, как это, вы будете иметь возможность делать запросы, как: «Сколько книг делает каждый член имеет»
- «Что является самой популярной книгой?»
- «Что является наименее популярной книгой?»
- «Какой самый популярный автор?»
«Мне нужно, чтобы скопировать все Джанго-модель»? Вы имеете в виду клонировать экземпляр модели - т. Е. Клонировать строку в базе данных. Это - вообще - страшная идея. Почему вы клонируете строки базы данных? Весь смысл реляционной модели данных состоит в том, чтобы сделать клонирование строки ненужной. Что делаешь? –
да, ваше право - мне нужно скопировать экземпляр модели. Я хочу скопировать экземпляр со всеми его атрибутами и отношениями к другим моделям. Знаете, я думал об избыточности и прочее - но для моей проблемы - это лучший способ просто скопировать его. – Peter
@Peter: «но для моей проблемы - это лучший способ просто скопировать его». Извините, но это не так. Этого не может быть. У вас есть «отношения» в базе данных, которые делают это совершенно бесполезным. Возможно, вам нужно исправить вашу модель данных, прежде чем идти слишком далеко по этой дороге. –