0

djangoは初めてです。私はこのモデルを持っています。tblpersonでは、タイプとステータスのforgeinキーのみが保存されます。すべてのテーブルを結合して、偽造キーではなく値を表示するにはどうすればよいですか?例えば。

TblPerson.objects.raw('SELECT * FROM "Tblperson" INNER JOIN "Tblstatus" ON ("TblPerson"."Status" = "Tblstatus"."ID")'):

ありがとう。

class TblPerson(models.Model):
    ID = models.AutoField(primary_key=True, db_column=u'ID') 
    Type = models.IntegerField(null=True, db_column=u'Type', blank=True)
    Status = models.IntegerField(null=True, db_column=u'Status', blank=True)
    class Meta:
        db_table = u'tblPerson'

class Tblstatus(models.Model):
    ID = models.AutoField(primary_key=True, db_column=u'statStatusID')
    Status = models.CharField(max_length=25, db_column=u'statStatus', blank=True)
    class Meta:
        db_table = u'tblStatus'

class Tbltype(models.Model):
    ID = models.AutoField(primary_key=True, db_column=u'typTypeID')
    Type = models.CharField(max_length=25, db_column=u'typType', blank=True)
    class Meta:
        db_table = u'tblType'
4

2 に答える 2

1

モデルを書き直すことをお勧めします。したがって、TblPerson が Tblstatus と多対 1 の関係を持つようにします。

class TblPerson(models.Model):
    ID = models.AutoField(primary_key=True, db_column=u'ID') 
    Type = models.IntegerField(null=True, db_column=u'Type', blank=True)
    Status = models.ForeignKey(Tblstatus, null=True, db_column=u'Status', blank=True)
    class Meta:
        db_table = u'tblPerson'

class Tblstatus(models.Model):
    ID = models.AutoField(primary_key=True, db_column=u'statStatusID')
    Status = models.CharField(max_length=25, db_column=u'statStatus', blank=True)
    class Meta:
        db_table = u'tblStatus'

これを使用すると、Tblstatus がこのように存在する TblPerson オブジェクトを照会できます。

TblPerson.objects.filter(Status__isnull=False)
于 2012-11-03T16:44:44.213 に答える
1

Django のパワーはORMにあります。つまり、SQL を書く必要はほとんどありません。

   class Person(models.Model):
        #don't use this because id is generated automatically
        #ID = models.AutoField(primary_key=True, db_column=u'ID')            

        type = models.ForeignKey(Type)
        status = models.ForeignKey(Status)


    #Type,Status analogous

    #filter like this
    selected = Person.objects.filter(type=SomeType)
    for p in selected:
        print p.id,p.type,p.status
于 2012-11-03T11:48:30.900 に答える