Ich werde versuchen, Ihre tatsächlichen Problem zu beantworten, denn was Sie in der Frage fragen, ist ein Problem mit Ihrer vorgeschlagenen Lösung, die, wie viele darauf hingewiesen haben, nicht wirklich ideal ist.
In den Kommentaren erwähnen Sie dies:
i .. erklären werde versuchen, So haben wir 2 Modelle: User und buchen. Ein Benutzer hat ein Buch namens "Titanic" mit etwas Inhalt. Jetzt möchte ein anderer Benutzer eine Beziehung zu diesem Buch auch. Aber, der zweite Benutzer will genau das gleiche Buch, aber es sollte "Schiff wird unter" genannt werden. Ich würde das Buch kopieren und es umbenennen. - Ich weiß, ich könnte auch den Inhalt des Buches in ein anderes Modell legen - aber mein Modell ist ein bisschen komplexer.
Sieht aus wie Sie drei Dinge zu verfolgen:
- Benutzer
- ihre Bücher
- Einige benutzerdefinierte stellt fest, dass Nutzer über ihre "owned" Buch.
Für jede Book
, speichern ihre gemeinsame Informationen, zum Beispiel:
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)
Nun müssen Sie Buch speichern -> Benutzer Beziehung, wie ein Anwender viele Bücher haben kann, zwei Benutzer besitzen kann das gleiche Buch, mit eigenen Meta-Informationen angehängt.
class BookClub(models.Model):
username = models.ForeignKey(User)
book = models.ForeignKey(Book)
comments = models.TextField()
Wenn Sie Ihre Modelle so strukturieren, können Sie wie Abfragen tun: „Wie viele Bücher hat jedes Mitglied“
- "Was ist das beliebteste Buch?"
- "Was ist das am wenigsten populäre Buch?"
- "Was ist der beliebteste Autor?"
„Ich brauche ein ganzes django-Modell kopieren“? Meinst du, klonen eine Instanz des Modells - d. H. Klonen eine Zeile in einer Datenbank. Dies ist - im Allgemeinen - eine schreckliche Idee. Warum würden Sie Datenbankzeilen klonen? Der springende Punkt des relationalen Datenmodells besteht darin, das Klonen einer Zeile unnötig zu machen. Was machst du? –
yeah, dein Recht - ich muss eine Instanz eines Modells kopieren .. Ich möchte eine Instanz mit all ihren Attributen und Beziehungen zu anderen Modellen kopieren. Weißt du, ich dachte über Redundanz und so - aber für mein Problem - es ist der beste Weg, es einfach zu kopieren. – Peter
@Peter: "aber für mein Problem - es ist der beste Weg, es einfach zu kopieren". Entschuldigung, aber es ist nicht. Es kann nicht sein. Sie haben "Beziehungen" in der Datenbank, die dies völlig unnötig machen. Vielleicht müssen Sie Ihr Datenmodell reparieren, bevor Sie zu weit gehen. –