我可以获得第三方API字段作为Django模型的外键吗



的确,我们可以在Django中建立模型之间的外键关系。从第三方API字段中获取一些字段作为特定Django模型的外键,怎么样?

这是我的Django型号budiness_process.py

class BusinessImpact(models.Model, ModelWithCreateFromDict):
client = models.ForeignKey(
accounts_models.Client, on_delete=models.CASCADE)
business_process = models.ForeignKey(
BusinessProcess, on_delete=models.CASCADE)
hierarchy = models.CharField(max_length=255)
business_assets = models.CharField(max_length=255)
asset_name = models.CharField(max_length=255)
vendors = models.CharField(max_length=255)
product = models.CharField(max_length=255)
version = models.CharField(max_length=10)
cpe = models.CharField(max_length=255)
asset_type = models.CharField(max_length=10)
asset_categorization = models.CharField(max_length=255)
asset_risk = models.CharField(max_length=50)
_regulations = models.TextField(blank=True)
_geolocation = models.TextField(blank=True)
def __str__(self) -> str:
return self.hierarchy + " - " + self.business_assets

这是我的serializer.py

class BusinessImpactSerializer(serializers.ModelSerializer):
business_process = BusinessProcessListSerializer()
class Meta:
model = models.BusinessImpact
fields = "__all__"

下面是第三个API实现,用于检索它的一些字段。

@api_view(
["GET"],
)
def cve_summery(request, key):
r = requests.get(
"https://services.nvd.nist.gov/rest/json/cves/1.0?cpeMatchString={}".format(
key)
)
if r.status_code == 200:
result = []
res = r.json().get("result").get("CVE_Items")
for rs in res:
data = {
"VulnID": rs.get("cve").get("CVE_data_meta").get("ID"),
"Summery": rs.get("cve").get("description").get("description_data"),
"exploitabilityScore": rs.get("impact")
.get("baseMetricV2")
.get("exploitabilityScore"),
"severity": rs.get("impact").get("baseMetricV2").get("severity"),
"impactScore": rs.get("impact").get("baseMetricV2").get("impactScore"),
}
result.append(data)
return Response(result)
return Response("error happend", r.status_code)

所以我的意图是,我可以在我的BusinessImpact模型中获得"severity": rs.get("impact").get("baseMetricV2").get("severity")作为外键吗?

谢谢!

外键的含义是在DB级别链接表,因此如果来自第三方API的数据没有存储在您的一侧,则不能有ForeignKey字段
但是,您可以将此信息存储在模型中的必填字段中,并在保存实例时验证值
通过这种方式,您可以确保密钥有效,并且可以在以后用于请求API。

最新更新