Почему в django при объединении двух таблиц имя другой модели рассматривается как имя поля в фильтре?
Я новичок в django.Я застрял в странной проблеме, которая заключается в том, что при объединении двух таблиц имя внешней модели рассматривается как имя поля, даже если я использую __ подчеркивание, и я получаю ошибку. Вот мои две модели :-
class TD_FD(models.Model):
id = models.BigAutoField(primary_key=True,db_index=True)
identity=models.CharField(max_length=25,unique=True,db_index=True)
del_status=models.CharField(max_length=6,default='na',db_index=True)
status=models.CharField(max_length=16,db_index=True)
primary_id=models.ForeignKey('all_scheme',to_field='identity',
db_column='primary_id'
,on_delete=models.PROTECT,max_length=25,
db_index=True)
def __str__(self):
return self
class all_scheme(models.Model):
id = models.BigAutoField(primary_key=True,db_index=True)
identity=models.CharField(max_length=25,unique=True,db_index=True)
del_status=models.CharField(max_length=6,default='na',db_index=True)
status=models.CharField(max_length=16,db_index=True)
scheme_name=models.CharField(max_length=150,db_index=True)
branch_id=models.CharField(max_length=25,db_index=True)
def __str__(self):
return self
```
This is my query
`deposit_data=TD_FD.objects.filter(all_scheme__branch_id=branch_id).values()`
But .filter('all_scheme__branch_id' treated as field name.Why?
Модель TD_FD
не имеет ничего при вызове all_scheme
. Однако вы можете попробовать вызвать это:
deposit_data=TD_FD.objects.filter(primary_id__branch_id=branch_id).values()
Сначала необходимо указать поле или отношение. Поскольку ваш TD_FD
имеет отношение ForeignKey
к all_scheme
, которое вы назвали primary_id
, то вы должны использовать это имя. Но фильтрация таким образом кажется бессмысленной, потому что это ВСЕГДА будет один объект, потому что это ForeignKey
(ManyToOne
отношение).
Читайте больше об отношениях Django.