Reputation: 124
I use Django 1.11, Python 3.6 and PostgreSQL 9.6.
I define two models as described in the documentation.
class CircDetect(models.Model):
oid = models.AutoField(primary_key=True)
...
class Meta:
db_table = 'circdetect'
class PatientMed(models.Model):
...
circdetect = models.ForeignKey(CircDetect, on_delete=models.CASCADE, to_field='oid')
...
But when I try to get an access to the list of PatientMed objects on the admin site I get an exception:
ProgrammingError at /canreg/editor/patientmed/
column patient_med.circdetect_id does not exist
LINE 1: ... "patient_info"."id") INNER JOIN "circdetect" ON ("patient_m...
HINT: Perhaps you meant to reference the column "patient_med.circdetect".
It looks like Django tries to get id
filed of circdetect
, which is actually has name oid
.
What can I do to fix this issue?
EDITED on 21 jul
As Ahmad took note below, I have an another model, that I didn't mention. I'm not sure it affects on the error in this case but this is that model:
class PatientInfo(models.Model):
...
class Meta:
db_table = 'patient_info'
And PatientMed is connected with PatientInfo this way:
class PatientMed(models.Model):
info = models.OneToOneField(PatientInfo, on_delete=models.CASCADE, primary_key=True)
...
But it works without any problems.
I should say, that circdetect
is a legacy table, that I already had in my database when I started work.
EDITED
I use this code to show PatientMed objects in the admin site:
class PatientMedAdmin(admin.ModelAdmin):
list_display = (
'info',
...
'circdetect',
...
)
list_per_page = 25
admin.site.register(models.PatientMed, PatientMedAdmin)
EDITED
As Alasdair ask below I put here full models. There is no secret in them, but they are big
class CircDetect(models.Model):
oid = models.AutoField(primary_key=True)
code = models.SmallIntegerField(blank=True, null=True)
txt = models.CharField(max_length=50, blank=True, null=True)
class Meta:
db_table = 'circdetect'
ordering = ['code']
class PatientInfo(models.Model):
objects = models.Manager()
first_name = models.CharField(max_length=50, blank=True, null=True)
last_name = models.CharField(max_length=50, blank=True, null=True)
patronymic = models.CharField(max_length=50, blank=True, null=True)
birth_date = models.DateField(blank=True, null=True)
zip_code = models.CharField(max_length=6, blank=True, null=True)
address = models.TextField(blank=True, null=True)
home_phone = models.CharField(max_length=11, blank=True, null=True)
cell_phone = models.CharField(max_length=11, blank=True, null=True)
e_mail = models.EmailField(null=True)
def __str__(self):
return u'%s %s %s %s' % (to_str(self.last_name), to_str(self.first_name),
to_str(self.patronymic), to_str(self.birth_date))
class Meta:
db_table = 'patient_info'
class PatientMed(models.Model):
objects = models.Manager()
info = models.OneToOneField(PatientInfo, on_delete=models.CASCADE, primary_key=True)
center = models.SmallIntegerField(blank=True, null=True)
sex = models.SmallIntegerField(blank=True, null=True)
fddate = models.DateField(blank=True, null=True)
tsdate = models.DateField(blank=True, null=True)
tdate = models.DateField(blank=True, null=True)
edate = models.DateField(blank=True, null=True)
otcode = models.SmallIntegerField(blank=True)
ddate = models.DateField(blank=True, null=True)
death_icd = models.CharField(max_length=7, blank=True, null=True)
ecode = models.SmallIntegerField(blank=True, null=True)
esource = models.SmallIntegerField(blank=True, null=True)
dcause = models.SmallIntegerField(blank=True, null=True)
dsource = models.SmallIntegerField(blank=True, null=True)
numtumor = models.SmallIntegerField(blank=True, null=True)
iccc = models.CharField(max_length=3, blank=True, null=True)
icd_10 = models.CharField(max_length=7, blank=True, null=True)
icd_o = models.CharField(max_length=5, blank=True, null=True)
fds = models.TextField(blank=True, null=True)
circdetect = models.ForeignKey(to=CircDetect, on_delete=models.CASCADE, to_field='oid')
hyst = models.CharField(max_length=5, blank=True, null=True)
cyto = models.CharField(max_length=5, blank=True, null=True)
exp_oper = models.CharField(max_length=5, blank=True, null=True)
immun = models.CharField(max_length=5, blank=True, null=True)
cytogen = models.CharField(max_length=5, blank=True, null=True)
lab_instr = models.CharField(max_length=5, blank=True, null=True)
incentr = models.CharField(max_length=5, blank=True, null=True)
lasttest = models.DateField(blank=True, null=True)
lastsource = models.SmallIntegerField(blank=True, null=True)
lfudate = models.DateField(blank=True, null=True)
lfucode = models.SmallIntegerField(blank=True, null=True)
otregion = models.CharField(max_length=5, blank=True, null=True)
date_actend = models.DateField(blank=True, null=True)
concord = models.SmallIntegerField(blank=True, null=True)
protocol = models.CharField(max_length=10, blank=True, null=True)
autopsie = models.CharField(max_length=5, blank=True, null=True)
tabort = models.SmallIntegerField(blank=True, null=True)
stage = models.SmallIntegerField(blank=True, null=True)
stage_sym = models.CharField(max_length=4, blank=True, null=True)
chirurg = models.CharField(max_length=5, blank=True, null=True)
radiolog = models.CharField(max_length=5, blank=True, null=True)
chimio = models.CharField(max_length=5, blank=True, null=True)
rdate = models.DateField(blank=True, null=True)
rem = models.TextField(blank=True, null=True)
t_tnm = models.SmallIntegerField(blank=True, null=True)
n_tnm = models.SmallIntegerField(blank=True, null=True)
m_tnm = models.SmallIntegerField(blank=True, null=True)
g_tnm = models.SmallIntegerField(blank=True, null=True)
encr_bas = models.SmallIntegerField(blank=True, null=True)
ct_tnm = models.SmallIntegerField(blank=True, null=True)
cn_tnm = models.SmallIntegerField(blank=True, null=True)
cm_tnm = models.SmallIntegerField(blank=True, null=True)
land = models.IntegerField(blank=True, null=True)
lum = models.CharField(max_length=5, blank=True, null=True)
oss = models.CharField(max_length=5, blank=True, null=True)
hepar = models.CharField(max_length=5, blank=True, null=True)
lung = models.CharField(max_length=5, blank=True, null=True)
brain = models.CharField(max_length=5, blank=True, null=True)
skin = models.CharField(max_length=5, blank=True, null=True)
nephro = models.CharField(max_length=5, blank=True, null=True)
herm = models.CharField(max_length=5, blank=True, null=True)
periton = models.CharField(max_length=5, blank=True, null=True)
kmark = models.CharField(max_length=5, blank=True, null=True)
unknown = models.CharField(max_length=5, blank=True, null=True)
other = models.CharField(max_length=5, blank=True, null=True)
acc = models.IntegerField()
class Meta:
db_table = 'patient_med'
Upvotes: 1
Views: 1276
Reputation: 124
I'm not sure what was the cause of the problem. I solved it by dropping my database and recreating it and my entities.
Thank you everyone.
Upvotes: 0
Reputation: 1087
You haven't written the instruction that makes the error. But it seems that you have another table named PatientInfo that the error is related to.
Upvotes: 0