我使用类Meta来定义某些模型的某些唯一性。有什么方法可以测试unique_together以查看它是否有效? 我知道在Ruby on Rails中,如果我没有将某个对象保存到数据库中,save()将返回False,但我在Django中找不到类似的东西。
class SiteBrand(models.Model):
id = models.UUIDField(primary_key=True, default=uuid.uuid4, editable=False)
name = models.CharField(max_length=200)
site = models.ForeignKey(Site) #should it be many to many?
code = models.CharField(max_length = 200) #what is the code in sitebrand?
created = models.DateTimeField(auto_now_add=True)
updated = models.DateTimeField(auto_now=True)
class Meta:
unique_together = ("site", "code")
答案 0 :(得分:0)
使用以下命令启动一个新的python shell:
python manage.py shell
然后确保导入Sitebrand模型:
from yourapp.models import Site, Sitebrand
然后尝试使用相同的站点和代码创建两个模型:
site = Site.objects.create( [the correct fields from Site here] )
Sitebrand.objects.create(name="first", site=site, code="yourcode")
Sitebrand.objects.create(name="second", site=site, code="yourcode")
当您使用相同的网站和代码键入第二行时,您会收到错误。
答案 1 :(得分:0)
您可以尝试以下操作:
class LibrarycategoryTestCase(TestCase):
def test_unique_together(self):
site = 'just a site'
code = 'just a code'
# Create the original
original = Sitebrand.objects.create(
site=site,
code=code
)
self.assertNotEquals(original, None)
# Attempt to create a copy
with self.assertRaises(Exception):
original_clone = Sitebrand.objects.create(
site=site,
code=code
)