2017-08-01 12 views
2

に私はこれらの二つのモデルを持って参加します。私の見解では、私はModelsからデータを取得するために、次のコードを使用します。インナーはDjangoの1.9

condition = Q(name__icontains=names[0]) 
for name in names[1:]: 
    condition &= Q(name__icontains=name) 
# ↓↓↓ this line is for what I need but it doesn't work 
condition &= Q(ModelInteractions__id2=id) 

models = Models.objects.filter(condition) 

idを要求(def details(request, id):)で受信されます。

からid2 = id(IDはリクエストにより承ります)からcommを選択する必要があります。

現在のコードを返します:

Cannot resolve keyword 'ModelInteractions' into field. Choices are: id, name 
+1

あなたはジャンゴでこのようにそれを行うことができない、あなたはいけない場合、あなたはそれを使用するか、他の生のクエリを使用することができ、ForeignKeyのと関係を持っている必要があります関係 – Exprator

+0

を言及したいことができますが、してください私の場合の例を示しますか? – feci

答えて

1
class ModelInteractions(models.Model): 
    id1 = models.IntegerField(primary_key=True) 
    id2 = models.IntegerField() 
    comm = models.TextField(blank=True, null=True) 

    class Meta: 
     managed = False 
     unique_together = (('id1', 'id2'),) 


class Models(models.Model): 
    id = models.IntegerField(primary_key=True) 
    name = models.TextField() 
    interaction= models.ForeignKey(ModelInteractions,on_delete=models.CASCADE) 

makemigrationsそして、このようなあなたのモデルを作成し、この行を変更し、ここで

condition = Q(name__icontains=names[0]) 
for name in names[1:]: 
    condition &= Q(name__icontains=name) 

まで同じクエリを実行し

を移行

condition &= Q(interaction__id2=id) 

その後、

models = Models.objects.filter(condition) 
+0

ありがとう!私はデフォルト値を提供すべきですか?マイグレーション時にこの 'django.db.utils.IntegrityError:column" interact_idに "null values contains"と表示されます。 – feci

+0

テーブルの古いデータは空白のままですが、古いデータが必要ない場合はデータベースを削除して新しいデータベースを作成して移行するか、デフォルトでは1にすることができます – Exprator

関連する問題