我有一个模型,我想将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)
注意: ' InstrumentAnnual '模型有一个名为'详细信息'模型的外键,名为' 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
,而不仅仅是一个可能没有意义的序列号。如果我以错误的方式解决这个问题,请告诉我。提前谢谢。
答案 0 :(得分:0)
您不必按照当前的方式执行查询集。如果要获取属于Detail对象的InstrumentAnnual对象,可以使用self.object.instrumental_annual
(假设self.object
是您的Detail对象,就像在示例中一样。
至于如何修复提供的查询,您当前正在检查带有InstrumentAnnual对象的字符串表示的序列号。但那不再是你的序列号了。相反,你会这样做
queryset = InstrumentAnnual.objects.get(instrument_details__serial_number = self.object.instrument_annual.serial_number, current_revision = True)
指定您实际上要检查序列号。但正如已经说过的那样,不需要这个查询集,因为您可以通过self.object.instrumental_annual
轻松获取InstrumentAnnual对象