你能不能解释一下TestCase类和TransactionTestCase类之间的区别.我已阅读该文档但其唯一的说法是TestCase在数据库事务中运行测试并使用回滚来"撤消"数据库中的测试,如果需要手动管理测试中的事务,则需要使用django.test.TransactionTestCase .
请你帮我理解一个例子的实际差异吗?我只是想知道TestCase失败的条件是什么?还是回滚是自动发生还是我们必须写回滚声明?
请帮我
我有一个模型如下.
class mc(models.Model):
ap=models.CharField(max_length=50,primary_key=True)
de=models.CharField(max_length=50)
STATUS=models.CharField(max_length=12,default='Y')
class Meta:
unique_together=(("ap","de"),)
db_table='mc'
Run Code Online (Sandbox Code Playgroud)
我给表mc写了ap ='1',de ='2'.
+----+----+--------+
| ap | de | STATUS |
+----+----+--------+
| 1 | 2 | Y |
+----+----+--------+
Run Code Online (Sandbox Code Playgroud)
然后我试着写ap ='1'和de ='3',但它只是覆盖了前一个.现在该表包含
+----+----+--------+
| ap | de | STATUS |
+----+----+--------+
| 1 | 3 | Y |
+----+----+--------+
Run Code Online (Sandbox Code Playgroud)
然后我试着写ap ='2',de ='3'及其工作.由于我已经给出了unique_together,因此ap和de的组合不起作用.
但是如果我没有在ap或de上使用'primary_key'或'unique'约束,unique_together会工作.
你能帮我吗?如何在主键上使用unique_together?
实际问题是,我有另一个类mc1,它使用外键到字段ap.
class mc1(models.Model):
test=models.ForeignKey(mc,on_delete=models.CASCADE,to_field='ap')
Run Code Online (Sandbox Code Playgroud)
所以mc.ap应该是唯一的,以定义一个外键.
我试图过滤具有模式 04:26 的行。我期待着这个命令,
cat file1.txt | grep -E '04:26'
Run Code Online (Sandbox Code Playgroud)
过滤时间戳后包含 04:26 的行。相反,我也得到了第二行。
文件1.txt
2022-12-23T04:26:47.748412+00:00 raspberrypi dnsmasq-dhcp[698]: DHCPREQUEST(eth0) 192.168.42.17 04:c8:07:23:04:26
2022-12-23T04:26:47.749307+00:00 raspberrypi dnsmasq-dhcp[698]: DHCPACK(eth0) 192.168.42.17 04:c8:07:23:34:13
Run Code Online (Sandbox Code Playgroud)
如何屏蔽时间戳的前 32 个字母以防止匹配?