1

私は問題なく動作しているdjangoアプリを持っていますが、突然何かが壊れているようです。

class ClosedUserGroup(models.Model):
    """ Preset definitions for ClosedUserGroup:
    """
    is_active = models.BooleanField(default=True)
    is_deleted = models.BooleanField(default=False)
    created_at = models.DateTimeField(
        auto_now=True,
        auto_now_add=True,
        null=True,
        default='2013-08-15 13:37:13.370030'
    )
    name = models.CharField(max_length=256, default='<MISSING:CUG_NAME')
    description = models.CharField(max_length=256)


class Partner(models.Model):
    id = models.IntegerField(primary_key=True)
    is_active = models.BooleanField(default=True)
    is_deleted = models.BooleanField(default=False)
    created_at = models.DateTimeField(
        auto_now=True,
        auto_now_add=True,
        null=True,
        default=datetime.datetime.now()
    )
    name = models.CharField(max_length=256, default='<MISSING:PARTNERNAME>')

class PartnerCug(models.Model):
    """ Partner to ClosedUserGroup relation
    """
    is_active = models.BooleanField(default=True)
    is_deleted = models.BooleanField(default=False)
    created_at = models.DateTimeField(
        auto_now=True,
        auto_now_add=True,
        null=True,
        default='2013-08-15 13:37:13.370030'
    )
    partner = models.ForeignKey(Partner)
    cug = models.ForeignKey(ClosedUserGroup)        

class Account(models.Model):
    """
        Account:
        TODO:DESCRIPTION
    """
    id = models.IntegerField(primary_key=True)
    is_active = models.BooleanField(default=True)
    is_deleted = models.BooleanField(default=False)
    created_at = models.DateTimeField(
        auto_now=True,
        auto_now_add=True,
        null=True,
        default=datetime.datetime.now()
    )
    number = models.CharField(max_length=64)
    submitted_by = models.ForeignKey(
        Partner,
        db_column='submitted_by'
    )       

django シェルでは、次のコマンドが正常に実行され、結果 1 が返されます。

from myapp.models import Account
account_object = Account.objects.filter(id=1)
account_object.filter(account__submitted_by__partnercug__cug=3).count()

ただし、django自体には、機能があります

def get_other_accounts():
    """get total accounts"""
    account_object = Account.objects.filter(id=1)
    total_accounts = account_object.filter(account__submitted_by__partnercug__cug=3).count() 

ただし、これはエラーで失敗し、DatabaseError: current transaction is aborted, commands ignored until end of transaction blockその関数の最後の行を指しています。そのため、Webアプリからではなく、djangoシェルが機能しています。

4

1 に答える 1