Django从模型返回特定字段作为外键

时间:2014-09-09 15:17:24

标签: python django foreign-keys

我正在Django的models.py中创建一个类。当我创建第二个类时,我有一个来自第一个类的外键。关键是" 1"或" 2"或者......

我想知道你是否可以设置Django来使用特定字段作为密钥。

例如:

class Customer(models.Model):
    name = models.CharField(max_length=64)
    myid = models.CharField(max_length=64)

class Setting(models.Model):
    owner = models.ForeignKey(Customer)
    ...

然后我有了一个观点

def getsetting(request):
    response = serializers.serialize('json', Setting.objects.all())
    return HttpResponse(response, content_type='json')

json返回显示" 1"," 2",...作为字段"所有者"的关键字。

所以我的问题是,如果我可以使用" name"或" myid"作为外键?或者有一种简单的方法可以在json中覆盖这些字段吗?

谢谢!

2 个答案:

答案 0 :(得分:1)

“如果您想指定自定义主键,只需在其中一个字段上指定primary_key = True即可。” https://docs.djangoproject.com/en/1.4/topics/db/models/#automatic-primary-key-fields

因此,您可以更改您的班级客户:

class Customer(models.Model):
    name = models.CharField(max_length=64)
    myid = models.CharField(primary_key=True, max_length=64)

答案 1 :(得分:1)

使用自然键查看序列化。您可以在此处阅读官方文档:https://docs.djangoproject.com/en/1.7/topics/serialization/#natural-keys

这很简单,只需在您的班级中添加一个方法:

class Customer(models.Model):
    name = models.CharField(max_length=64)
    myid = models.CharField(max_length=64)

    def natural_key(self):
        return (self.myid, )

然后使用use_natural_foreign_keys=True序列化:

def getsetting(request):
    response = serializers.serialize('json', Setting.objects.all(), 
                                     use_natural_foreign_keys=True)
    return HttpResponse(response, content_type='json')