簡體   English   中英

Django從模型返回特定字段作為外鍵

[英]Django return specific field from model as foreign key

我正在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”,...作為字段“所有者”的鍵。

所以我的問題是,是否可以使用“名稱”或“ myid”作為外鍵? 還是有一種簡單的方法來覆蓋json中的這些字段?

謝謝!

“如果要指定自定義主鍵,只需在其中一個字段上指定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)

看一下使用自然鍵的序列化。 您可以在此處閱讀官方文檔: 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')

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM