Django模型的ForeignKey对象显示字段名称而不是对象值

标签 django django-models

我在Django模型中使用了名为Memberno的ForeignKey。在Members类中输入数据后,它在其他类中显示为“memberno”字段中的“成员对象”。对于ForeignKey,我将'raw_id_fields'用作解决方法,但对于普通字段,甚至是'filter_horizo​​ntal',每个memberno值都显示为“member object”。我希望这些值能像它们在成员类中一样显示,即1、2 ...

from django.db import models

# Create your models here.
class Members(models.Model):
    DESIGNATION_CHOICES=(
    ('ADM', 'Administrator'),
    ('OFF', 'Club Official'),
    ('MEM', 'Ordinary Member'),
    )
    memberno = models.AutoField(primary_key=True)
    fname = models.CharField(max_length=15)
    sname = models.CharField(max_length=15)
    onames = models.CharField(max_length=30, blank=True)
    email = models.EmailField()
    phoneNumber = models.CharField(max_length=15)
    regNo = models.CharField(max_length=15)
    designation = models.CharField(max_length=3,choices=DESIGNATION_CHOICES)
    image = models.ImageField(max_length=100,upload_to='photos/%Y/%m/%d', blank=True, null=True)
    course = models.CharField(max_length=30, blank=True, null=True)


def __unicode__(self):
    return  u'%s %s %s' % (self.fname, self.sname, self.memberno)


def get_absolute_url(self):
    return '%s%s/%s' % (settings.MEDIA_URL, settings.ATTACHMENT_FOLDER, self.id)

def get_download_url(self):
    return '%s%s/%s' % (settings.MEDIA_URL, settings.ATTACHMENT_FOLDER, self.name)




class Security(models.Model):
    memberno = models.ForeignKey(Members, unique=True)
    username = models.CharField(max_length=30, primary_key=True)
    password = models.CharField(max_length=70)

def __unicode__(self):
    return  u'%s %s %s' % (self.username, self.password, self.memberno)


class Subscriptions(models.Model):
    memberno = models.ForeignKey(Members)
    receiptNo = models.CharField(max_length=30, primary_key=True)
    type = models.CharField(max_length=50)
    date = models.DateField()
    amount = models.FloatField(max_length=99)

def __unicode__(self):
    return  u'%s %s %s' % (self.receiptno, self.type, self.memberno)




class events(models.Model):
    eventName  = models.CharField(max_length=25)
    eventID =  models.AutoField(primary_key=True)
    details = models.TextField()
    attendanceFee = models.FloatField(max_length=99)
    date = models.DateField()
    memberno = models.ManyToManyField(Members)



def __unicode__(self):
    return  u'%s %s %s' % (self.eventName, self.eventID, self.memberno)

最佳答案

管理界面似乎使用__str__()来确定模型的显示。创建模型时,我总是习惯同时定义__unicode__()__str__()。例如:

class Activity(models.Model):
    activity_code = models.ForeignKey(ActivityCode)
    note = models.TextField(blank=True)
    def __str__(self):
        return "(%s) %s" % (self.activity_code.short, self.note)
    def __unicode__(self):
        return u'(%s) %s' % (self.activity_code.short, self.note)

更新:
看来您的def __unicode__(self)在代码中未正确缩进。结果,它不是您的类(class)的一部分,并且没有被使用。缩进在Python中非常重要。

关于Django模型的ForeignKey对象显示字段名称而不是对象值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2176765/

相关文章:

sql - 从外部源查询数据的 django 模型

python - 如何在不检索外来对象实例的情况下保存外键?

django - 为 Django 模型字段分配友好名称

django - 无法在 django 模型中创建外键

django - 如何在响应中返回两个序列化程序

python - Django-cms:无法在不同级别发布具有相同 slug 的 2 个页面

django - 如何仅将自定义权限与 syncdb 同步?

django - 如何在表单验证错误 Django 上预填充图像字段?

Django 和 Selenium 集成

python - 在 Graphql 查询中收到不兼容的实例