0

保存時にデータベースに複製されていないことを確認するために、同じ (content_type と object_id) のレコードが追加されていることを確認する必要があります。

  class objectHere(models.Model):
        """
        Notes:


        See: http://www.screamingatmyscreen.com/2012/6/django-and-generic-relations/
        """
        content_type = models.ForeignKey(ContentType, help_text="Represents the name of the model")
        object_id = models.PositiveIntegerField(help_text="stores the object id")
        content_object = generic.GenericForeignKey('content_type', 'object_id')

        reason = models.CharField(max_length=60)

        request_made = models.DateTimeField(auto_now_add=True,
                                       help_text="Shows when object was created.")

私はpre_saveで何かをすることを考えていましたか? これを行うことができますか?

4

2 に答える 2

2

私が考えることができる複数の方法のいずれかでそれを行うことができます:

  1. pre_save信号_
  2. save()モデルのメソッドをオーバーライドする
  3. Metaモデルのプロパティに一意の制約を追加します。
  4. ビューまたはフォームの clean メソッドで確認してください

最もクリーンなアプローチはunique_together 、モデルの でを使用することMetaです。ただし、モデルに対して移行を実行したくない場合は、エラーに対処するために必要なユーザー アクションがあれば、ビュー/フォームの clean メソッドをお勧めします。

于 2013-06-04T15:37:32.387 に答える
1

モデルでunique_togethermeta オプションを使用できます。

class MyObject(models.Model): 
    content_type = models.ForeignKey()
    object_id = models.PositiveIntegerField()
    content_object = generic.GenericForeignKey('content_type', 'object_id')

    ....

    class Meta:
        unique_together = ["content_type", "object_id", ]
于 2013-06-04T15:34:15.693 に答える