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

You could use the unique_together meta option on your model:

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 回答