【发布时间】:2014-11-26 11:32:00
【问题描述】:
我有一个模型,我想将 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 - Instruments 应用:查询
queryset = InstrumentAnnual.objects.get(instrument_details__serial_number = self.object.instrument_annual, current_revision = True)
注意: 'InstrumentAnnual' 模型有一个外键到 'Details' 模型,称为 '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,而不仅仅是一个可能毫无意义的序列号。如果我以错误的方式解决这个问题,请告诉我。提前致谢。
【问题讨论】:
-
什么?那个型号是完全一样的,它仍然有一个序列号。唯一的区别在于
__unicode__方法与查询无关。 -
嗨,对不起,我以为是这样(仍在学习!)。当我使用相同的查询时,它会说没有匹配项,但是使用“当前”代码它可以工作。
标签: python django django-queryset