gpt4 book ai didi

python - Django Restful 模型外键 - 指定 From 和 To 字段

转载 作者:行者123 更新时间:2023-11-29 21:00:22 24 4
gpt4 key购买 nike

我是 Django 新手,试图了解如何在模型中设置数据库关系。我有以下两个模型:

class BusinessTypes(models.Model):
categoryID = models.AutoField(db_column='TypeID', primary_key=True) # Field name made lowercase.
category = models.CharField(db_column='type', max_length=200)
newtype = models.CharField(db_column='newType', max_length=200) # Field name made lowercase.
dec = models.CharField(max_length=255)
tabsize = models.CharField(db_column='tabSize', max_length=10) # Field name made lowercase.
#subcategory = models.ForeignKey(BusinessTypesSub, to_field='Type_ID')

class Meta:
managed = False
db_table = 'business_types'
app_label = 'sapi'

class BusinessTypesSub(models.Model):
subcategoryID = models.AutoField(db_column='Type_subID', primary_key=True) # Field name made lowercase.
categoryID = models.IntegerField(db_column='Type_ID') # Field name made lowercase.
status = models.IntegerField()
showpub = models.IntegerField(db_column='showPub') # Field name made lowercase.
showcity = models.CharField(db_column='showCity', max_length=20) # Field name made lowercase.
subcategory = models.CharField(db_column='sub', max_length=255)
sub_alternative = models.CharField(max_length=255)
category = models.ForeignKey(BusinessTypes,from_field='Type_ID', to_field='TypeID')

class Meta:
managed = False
db_table = 'business_types_sub'
app_label = 'api'

business_types 和business_types_sub 表之间存在一对多关系。我想设置一个外键关系,这样如果我创建一个通过 BusinessTypesSub 调用序列化程序的 View ,我就可以访问 BusinessTypesModel 中类别字段的值。外键关系应该是从 BusinessTypesSub 字段“Type_ID”到 BusinessTypes 字段“TypeID”。

我该如何创建这个?我尝试将以下内容添加到 BusinessTypesSub 模型中,但它只会创建以下错误:

category = models.ForeignKey(BusinessTypes,to_field='TypeID')

BusinessTypes has no field named 'TypeID'

另外,我如何在 View /序列化器中调用它。例如,如何将“类别”添加到以下序列化程序:

class BusinessTypesSubSerializer(serializers.ModelSerializer):
category = serializers.RelatedField(source='BusinessType', read_only=True)

class Meta:
model = BusinessTypesSub
fields = ('categoryID', 'category', 'subcategoryID', 'subcategory')

最佳答案

您指定了错误的to_field,它应该是BusinessType类的categoryID字段的名称,而不是数据库中的列的名称:

category = models.ForeignKey(BusinessTypes, to_field='categoryID')

要在 BusinessTypesSubSerializer 中显示类别,您可以从此处定义的多个选项中进行选择:http://www.django-rest-framework.org/api-guide/relations/ 。例如。对于 StringRelatedField,您可以定义:

class BusinessTypesSubSerializer(serializers.ModelSerializer):
category = serializers.StringRelatedField(read_only=True)

class Meta:
model = BusinessTypesSub
fields = ('categoryID', 'category', 'subcategoryID', 'subcategory')

关于python - Django Restful 模型外键 - 指定 From 和 To 字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37284467/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com