6

これは非常に基本的なことだと思いますが、Django を初めて使用するので、これを処理する方法がわかりません。

django-model のインスタンスをコピーする必要があります。hereで説明されているように、ManyToMany 関係のコピーには問題があります。しかし、添付ファイル「django-model-copying.diff」にはその機能があると思います。わかりません-私のDjangoにはすでにその機能がありますか?呼び方がわかりません。助けていただければ幸いです。

4

4 に答える 4

5

ドキュメントには、多対多の関係を処理する方法など、これを行う方法に関する指示が含まれています。

于 2013-03-10T09:33:59.613 に答える
4

次の操作を実行できます。

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/

于 2010-09-30T20:44:19.157 に答える
1

あなたが質問で求めているのは提案された解決策の問題であり、多くの人が指摘しているように、それは本当に理想的ではないので、私はあなたの実際の問題に答えようとします。

コメントであなたはこれに言及します:

説明しようと思います。つまり、ユーザーとブックの2つのモデルがあります。ユーザーが「Titanic」という本を持っていて、その内容がいくつか含まれています。今、別のユーザーもその本との関係を望んでいます。しかし、2番目のユーザーはまったく同じ本を望んでいますが、「船は下にあります」と呼ばれる必要があります。私はその本をコピーして名前を変更します。-本の内容を別のモデルに入れることもできますが、私のモデルはもう少し複雑です。

追跡するものが3つあるようです。

  1. ユーザー
  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()

このようにモデルを構成すると、次のようなクエリを実行できるようになります。

  • 「各メンバーは何冊の本を持っていますか?」
  • 「最も人気のある本は何ですか?」
  • 「最も人気のない本は何ですか?」
  • 「最も人気のある作家は何ですか?」
于 2013-03-10T09:55:59.673 に答える