我正在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中覆盖这些字段吗?
谢谢!
答案 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')