Python 如何在django模型中返回双字符串

Python 如何在django模型中返回双字符串,python,django,Python,Django,大家好。我有个小问题。我创建了一个模型: class Cudzoziemiec(models.Model): imie = models.CharField(max_length=80, verbose_name="Imię", unique=False) nazwisko = models.CharField(max_length=150, verbose_name="Nazwisko", unique=False) class Meta: verbo

大家好。我有个小问题。我创建了一个模型:

class Cudzoziemiec(models.Model):
    imie = models.CharField(max_length=80, verbose_name="Imię", unique=False)
    nazwisko = models.CharField(max_length=150, verbose_name="Nazwisko", unique=False)

    class Meta:
        verbose_name = 'Cudzoziemca'
        verbose_name_plural = 'Cudzoziemcy'

    def __str__(self):
        return self.nazwisko

class Umowa(models.Model):
    RODZAJ_UMOWY = (
        ('UP', 'Umowa o pracę'),
        ('UZ', 'Umowa zlecenie'),
        ('UD', 'Umowa o dzieło'),
        )
    osoba = models.ForeignKey(Cudzoziemiec, on_delete=models.CASCADE, verbose_name="Wybierz cudzoziemca")
    umowa_rodzaj = models.CharField(max_length=250,choices=RODZAJ_UMOWY, verbose_name="Rodzaj umowy")
    nr_umowy = models.PositiveIntegerField()
    umowa_od = models.DateField(auto_now=False, auto_now_add=False, verbose_name="Data rozpoczęcia pracy")
    umowa_do = models.DateField(auto_now=False, auto_now_add=False, verbose_name="Data zakończenia pracy")

    class Meta:
        verbose_name = 'Umowę'
        verbose_name_plural = 'Umowy'

    def __str__(self):
        return self.nr_umowy
在面板管理中,一切正常。但是当我想在Umowy中创建一个新记录时,如何在panel admin中显示“imie”+“nazwisko”。现在我只有“nazwisko”,如果我想通过Umowa类添加新记录,请在该类中选择一个“osoba”

编辑: 当我想添加新记录时,django会返回一个错误:

__str__ returned non-string (type int)

不确定这是否是您想要的,但Django表单生成的select输入中使用的字符串表示通常使用
\uuu str\uu
方法:

class Cudzoziemiec(models.Model):
    imie = models.CharField(max_length=80, verbose_name="Imię", unique=False)
    nazwisko = models.CharField(max_length=150, verbose_name="Nazwisko", unique=False)

    class Meta:
        verbose_name = 'Cudzoziemca'
        verbose_name_plural = 'Cudzoziemcy'

    def __str__(self):
        return '{} {}'.format(self.imie , self.nazwisko)
或同等结果:

def __str__(self):
    return '%s %s' % (self.imie , self.nazwisko)
或者如果您使用的是Python 3.6+

def __str__(self):
    return f'{self.imie} {self.nazwisko}'

关于“non-string”错误,这是因为
\uu str\uu
应该返回字符串对象。在第二种情况下,您将返回一个
self.nr_umowy
,它是一个
PositiveIntegerField

你必须投下它:

def __str__(self):
    return str(self.nr_umowy)

是的,维克多在工作。我采取了第一种解决方案,一切正常。谢谢,维克多,你能检查一下我的编辑吗?当我想保存记录时,django会返回一个错误