これは非常に基本的なことだと思いますが、Django を初めて使用するので、これを処理する方法がわかりません。
django-model のインスタンスをコピーする必要があります。hereで説明されているように、ManyToMany 関係のコピーには問題があります。しかし、添付ファイル「django-model-copying.diff」にはその機能があると思います。わかりません-私のDjangoにはすでにその機能がありますか?呼び方がわかりません。助けていただければ幸いです。
ドキュメントには、多対多の関係を処理する方法など、これを行う方法に関する指示が含まれています。
次の操作を実行できます。
m = MyModel.objects.get(pk=1)
m.id = None
m.save()
そうすれば、検証中にエラーをトリガーするプロパティid
の場合、もちろん new で新しいインスタンスが作成されます。unique
注:
あなたが言及した機能については、まだトランクに追加されておらず、ステータスは ですがdesign decision needed
、何をしているのかわかっている場合は、差分を手動で django インスタンスに適用できます。これはパッチ適用と呼ばれます。その方法の詳細を次に示します: http://ariejan.net/2007/07/03/how-to-create-and-apply-a-patch-with-subversion/。
あなたが質問で求めているのは提案された解決策の問題であり、多くの人が指摘しているように、それは本当に理想的ではないので、私はあなたの実際の問題に答えようとします。
コメントであなたはこれに言及します:
説明しようと思います。つまり、ユーザーとブックの2つのモデルがあります。ユーザーが「Titanic」という本を持っていて、その内容がいくつか含まれています。今、別のユーザーもその本との関係を望んでいます。しかし、2番目のユーザーはまったく同じ本を望んでいますが、「船は下にあります」と呼ばれる必要があります。私はその本をコピーして名前を変更します。-本の内容を別のモデルに入れることもできますが、私のモデルはもう少し複雑です。
追跡するものが3つあるようです。
それぞれについて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)
ここで、[本]-> [ユーザーリレーション]を保存する必要があります。たとえば、1人のユーザーが多数の本を所有でき、2人のユーザーが同じ本を所有し、独自のメタ情報が添付されている場合があります。
class BookClub(models.Model):
username = models.ForeignKey(User)
book = models.ForeignKey(Book)
comments = models.TextField()
このようにモデルを構成すると、次のようなクエリを実行できるようになります。