在django信号中获取pk_set值会导致原子错误

时间:2017-09-13 16:40:56

标签: python django

这是我的信号

def my_signal(instance, action, pk_set, **kwrags):
    instance.animal_count = instance.animals.all().count()
    instance.save()
    if action == 'post_add':
        print pk_set #works
        print pk_set[0] #no work

奇怪的是,如果我只打印pk_set,我会得到set([1]),但如果我尝试使用[0]获取实际值,我会遇到:

TransactionManagementError: An error occurred in the current transaction. You can't execute queries until the end of the 'atomic' block.

有没有办法获得pk_set号码?我字面上只需要id。

注意:在测试用例期间会发生这种情况。

奇怪的是,如果我这样做

list(pk_set)[0]

这是有效的

1 个答案:

答案 0 :(得分:0)

由于某些原因做

list(pk_set)[0]

有效但但并非如此:

pk_set[0]