Я нашел несколько ответов, которые похожи на мою проблему, но нет. Может быть, я здесь что-то не хватает, но здесь идет;Возвращаемый объект Foreignkey вместо self.name
Я хочу, чтобы модель возвращала по умолчанию имя объекта foreignkey, с которым оно связано.
Это соединительная таблица
class CharacterTrait(models.Model):
id = models.IntegerField(primary_key=True) # AutoField?
id_character = models.ForeignKey(Werewolfcharacter, null=True, db_column = 'id_character')
id_trait = models.ForeignKey(Trait, null=True, db_column = 'id_trait')
class Meta:
managed = False
db_table = 'character_trait'
def __unicode__(self):
return self.id_trait
Это таблица Черта
class Trait(models.Model):
id = models.IntegerField(primary_key=True) # AutoField?
id_traittype = models.ForeignKey(Traittype, null=True, db_column = 'id_traittype')
name = models.CharField(max_length=32)
class Meta:
managed = False
db_table = 'trait'
def __unicode__(self):
return self.name
Так что, когда я хотел бы просить для возвращаемого значения, я бы ожидать, когда я призываю CharacterTrait, чтобы получить вернуть имя связанного объекта. Но, когда я иду к администратору, я получаю эту ошибку;
Exception Type: TypeError
Exception Value: coercing to Unicode: need string or buffer, Trait found
Но когда он находит Trait, не следует ли вернуть Trait.name? Очевидно, это не так, иначе я бы не стал задавать этот вопрос.
Также, когда я делаю это в CharacterTrait;
Защиту юникода (Я): возвращение self.id_trait.name
я вернусь это;
[<CharacterTrait: Homid>]
Это то, что я хочу, но только строка «Хомид», а не как модель.
как о '' возвращения self.id_trait.name''? –