首页 > 解决方案 > 外键返回对象而不是整数

问题描述

在“模型.py”中

class Run(models.Model):
    number = models.IntegerField(choices=((int(x), x) for x in range(1, 50)))
    type = models.CharField(max_length=10, choices=((str(x), x) for x in ['bit', 'casing']))
    run_date = models.DateTimeField(default=timezone.now)
    well = models.ForeignKey(Well, related_name='run', on_delete=models.CASCADE)
    created_by = models.ForeignKey(User, related_name='run_created_by', null=True, on_delete=models.SET_NULL)
    description = models.CharField(max_length=255)

    class Meta:
        verbose_name = "Run Information"
        verbose_name_plural = "Run Information"

    def __int__(self):
        return self.number

class BitRun(models.Model):
    number = models.PositiveSmallIntegerField(choices=((int(x), x) for x in range(1, 50)))
    od = models.DecimalField(max_digits=5, decimal_places=3)
    inner_diameter = models.DecimalField(max_digits=5, decimal_places=3)
    tfa = models.DecimalField(max_digits=5, decimal_places=3)
    bottom_depth = models.DecimalField(max_digits=7, decimal_places=2)
    top_depth = models.DecimalField(max_digits=7, decimal_places=2)
    run = models.ForeignKey(Run, related_name='bit_number', on_delete=models.CASCADE)
    well = models.ForeignKey(Well, related_name='well_name', on_delete=models.CASCADE)

    class Meta:
        verbose_name = "Bit Record"
        verbose_name_plural = "Bit Records"

在“admin.py”中

class BitRunAdmin(admin.ModelAdmin):
    ordering = ('number',)
    list_display = ('well', 'run',  'od', 'tfa')
    list_filter = ['well']
    search_fields = ['well']

我看到运行对象(1)而不是实际的字段值。

有人可以指出我在代码中做错了什么吗?谢谢

标签: django-models

解决方案


__str__为每个模型添加表示。

def __str__(self):
    rerurn f"{self.field_name}"

field_name必须是您要查看的字段的名称。


推荐阅读