我有一个模型,我想将 return
字段从单个字段更改为连接的字符串字符串 . 我已经完成了这个并且它工作正常,当我尝试查询与该模型相关的外键时出现问题 .
当前代码
Models.py - 项目应用
class Details(models.Model):
serial_number = models.CharField(max_length = 300, unique=True, null = True, blank = True)
manufacturer = models.CharField(max_length = 300, null = True, blank = True)
model_type = models.CharField(max_length = 300, null = True, blank = True)
equipment_type = models.CharField(max_length = 300, null = True, blank = True)
class Meta:
ordering = ["serial_number"]
def __unicode__(self): # Python 3: def __str__(self):
return self.serial_number
Views.py - 仪器应用:查询
queryset = InstrumentAnnual.objects.get(instrument_details__serial_number = self.object.instrument_annual, current_revision = True)
NOTE: ' InstrumentAnnual ' model has a foreign key to ' Details ' model called ' Instrument_Details ' .
新规范
Models.py - 项目应用
class Details(models.Model):
serial_number = models.CharField(max_length = 300, unique=True, null = True, blank = True)
manufacturer = models.CharField(max_length = 300, null = True, blank = True)
model_type = models.CharField(max_length = 300, null = True, blank = True)
equipment_type = models.CharField(max_length = 300, null = True, blank = True)
class Meta:
ordering = ["serial_number"]
def __unicode__(self): # Python 3: def __str__(self):
return u"%s %s %s" % (self.manufacturer, self.model_type, self.equipment_type)
所以我的问题是如何通过外键查询上述模型,因为它不再返回 self.serial_number
所以我不能在查询中使用 __serial_number
.
我想要的结果只是在外键下拉列表中显示 manufacturer
,_ model_type
和 equipment_type
而不是只是一个可能没有意义的序列号 . 如果我以错误的方式解决这个问题,请告诉我 . 提前致谢 .
1 回答
您不必像当前那样执行查询集 . 如果要获取属于Detail对象的InstrumentAnnual对象,可以使用
self.object.instrumental_annual
(假设self.object
是您的Detail对象,就像在您的示例中一样) .至于如何修复提供的查询,您当前正在检查带有InstrumentAnnual对象的字符串表示的序列号 . 但那不再是你的序列号了 . 相反,你会这样做
指定您实际上想要检查序列号 . 但正如已经说过的那样,不需要这个查询集,因为你可以通过
self.object.instrumental_annual
轻松获取InstrumentAnnual对象 .